在循环中定义函数可以为每次迭代重新定义函数,或者python可以优化它吗



有时为了方便,我会定义临时函数

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

最新更新