Избегайте повторного написания FOR l oop для особых случаев - PullRequest
0 голосов
/ 26 мая 2020

Все мои сценарии python принимают аргумент типа bool, называемый debug, который, если True, распечатывает массу материала и делает for l oop индикатор выполнения, используя tqdm, как показано ниже

from tqdm import tqdm
for i in tqdm(range(1000)):
     ## rest of the calculation

Однако я хотел бы отключить индикатор выполнения tqdm, когда отладка ложна, и я не уверен, как это сделать, кроме как переписать for l oop снова без tqdm (для debug = False case). Мы приветствуем любые предложения, как сделать это более элегантно.

Спасибо

1 Ответ

6 голосов
/ 26 мая 2020

Определите tqdm условно:

if debug:
    from tqdm import tqdm
else:
    def tqdm(x):  # Noop version when not in debug mode
        return x

    # Alternative version that's slightly less clear,
    # but probably slightly more performant, due to using built-in:
    tqdm = iter  # Explicitly make it convert the input to an iterator, but do nothing else

Это делает tqdm бездействующим, когда он не находится в режиме отладки, поэтому исходный for l oop по-прежнему работает без изменений или дублирования.

...