Предположим, у меня есть следующий код:Python ленивая оценка?
def my_func(input_line):
is_skip_line = self.is_skip_line(input_line) # parse input line check if skip line
if is_skip_line:
# do something...
# do more ...
if is_skip_line:
# do one last thing
Так у нас есть чек на is_skip_line (если is_skip_line:), который появляется в два раза. Означает ли это, что из-за ленивой оценки метод self.is_skip_line (input_line) будет вызываться дважды?
Если да, то чем лучше всего работать, учитывая, что self.is_skip_line (input_line) занимает много времени? Должен ли я «немедленно вызвать» его, как показано ниже?
is_skip_line = (lambda x: self.is_skip_line(x))(input_line)
Thanks.
Это не лениво оценивающая инструкция в Python. Единственная ситуация, в которой Python лениво оценивает, - это генераторы. 'self.is_skip_line (input_line)' будет оцениваться только один раз. – jwilner
'is_skip_line' оценивается дважды, но' self.is_skip_line (input_line) 'оценивается только один раз. – TigerhawkT3
Почему вы думаете, что завершение вызова функции в лямбда, а затем применение ее к аргументу, было бы менее ленивым, чем просто применение вызова? – chepner