Python懒惰的评价?

时间:2015-05-23 19:50:28

标签: python lazy-evaluation

假设我有以下代码:

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 if 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)

感谢。

1 个答案:

答案 0 :(得分:1)

这里的误解是没有立即调用此语句:

is_skip_line = self.is_skip_line(input_line)

......事实上,

方法self.is_skip_line只能在一次中调用。由于您将其分配给变量,因此您可以在任何您喜欢的上下文中多次使用该变量。

如果您关注它的性能,那么您可以使用cProfile来真正测试它所调用的方法的性能。呼叫。