假设我有以下代码:
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)
感谢。
答案 0 :(得分:1)
这里的误解是没有立即调用此语句:
is_skip_line = self.is_skip_line(input_line)
......事实上, 。
方法self.is_skip_line
只能在一次中调用。由于您将其分配给变量,因此您可以在任何您喜欢的上下文中多次使用该变量。
如果您关注它的性能,那么您可以使用cProfile
来真正测试它所调用的方法的性能。呼叫。