有时为了方便,我会定义临时函数
def parse_time(string):
h, m = string.split(':')
return timedelta(hours=h, minutes=m)
something = parse_time(re.search(r'(dd:dd)', line).group(1))
这没关系,现在我在一个循环中有了上面的片段:
for line in file:
# ... some code
def parse_time(string):
h, m = string.split(':')
return timedelta(hours=h, minutes=m)
something = parse_time(re.search(r'(dd:dd)', line).group(1))
我的问题是,python会优化它吗?还是会为每次迭代重新定义函数?我该如何验证?
问候,
在循环中定义函数是浪费。由于def
关键字,它每次都会(重新(定义函数。一个简单的测试:
>>> def foo(x):
... print(x + 1)
...
>>> id(foo)
1971729284632
>>> def foo(x):
... print(x + 1)
...
>>> id(foo)
1971739226320