Какой смысл дважды проверять одно и то же условие в операторах if и assert? - PullRequest
1 голос
/ 23 февраля 2020

Есть ли причина проверять одно и то же условие дважды в операторе if и assert?

    if args.output:
        if os.path.isdir(args.output):
            assert os.path.isdir(args.output), args.output

Это из файла demo.py из исходного кода Facebook Detectron2 Github. Если вы хотите увидеть, откуда появился этот код, здесь приведено больше кодов:

if args.input:
    if len(args.input) == 1:
        args.input = glob.glob(os.path.expanduser(args.input[0]))
        assert args.input, "The input path(s) was not found"
    for path in tqdm.tqdm(args.input, disable=not args.output):
        # use PIL, to be consistent with evaluation
        img = read_image(path, format="BGR")
        start_time = time.time()
        predictions, visualized_output = demo.run_on_image(img)
        logger.info(
            "{}: detected {} instances in {:.2f}s".format(
                path, len(predictions["instances"]), time.time() - start_time
            )
        )

        if args.output:
            if os.path.isdir(args.output):
                assert os.path.isdir(args.output), args.output
                out_filename = os.path.join(args.output, os.path.basename(path))
            else:
                assert len(args.input) == 1, "Please specify a directory with args.output"
                out_filename = args.output
            visualized_output.save(out_filename)
        else:
            cv2.namedWindow(WINDOW_NAME, cv2.WINDOW_NORMAL)
            cv2.imshow(WINDOW_NAME, visualized_output.get_image()[:, :, ::-1])
            if cv2.waitKey(0) == 27:
                break  # esc to quit
...