Избегайте оператора IF после того, как условие будут соблюдать

У меня есть операция деления в цикле, который много раз повторяется. Это так происходит, который в нескольких первых проходит через цикл (более или менее сначала 10 циклов), делитель является нулем. После того как это получает значение, отделение нулевой ошибкой не длиннее возможный.

Я имею if условие протестировать значение делителя для ухода от отделения нулем, но я задаюсь вопросом, что существует влияние производительности та оценка этого if будет иметь для каждого выполнения в последующих циклах, тем более, что я знаю, что это больше бесполезно.

Как это должно быть кодировано? в Python?

5
задан Qantas 94 Heavy 11 November 2014 в 10:30
поделиться

3 ответа

Я бы обернул ваш вызов в блоки try/except. Они очень дешевы в python, и стоят примерно столько же, сколько оператор pass, если исключение не будет выброшено. Python устроен так, что вы должны делать свои вызовы и разбирать любые ошибки вместо того, чтобы постоянно спрашивать разрешения.

Пример кода:

def print_divide(x,y):
    try:
        print x/y
    except ZeroDivisionError:
        pass
6
ответ дан 18 December 2019 в 10:43
поделиться

Я с Тило: я думаю, это должно быть довольно дешево.

Если вам действительно интересно, вам следует рассчитать код и выяснить, недопустимы ли небольшие накладные расходы. Я подозреваю, что нет.

1
ответ дан 18 December 2019 в 10:43
поделиться

Не волнуйтесь. if (a! = 0) дешево.

Альтернативой (если она действительно нужна) может быть разделение цикла на два и выход из первого, как только делитель получит свое значение. Но похоже, что это сделает код излишне сложным (трудным для чтения).

9
ответ дан 18 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: