【发布时间】:2014-09-25 19:49:50
【问题描述】:
这是一个简单的问题,但由于我没有找到任何答案,我认为答案是否定的。但是,为了确保,我问它:
在函数中处理完变量后,将变量设置为 None 是否会使 Python 代码更高效?
举个例子:
def foo(fname):
temp_1, temp_2 = load_file_data(fname)
# do some processing on temp_1, temp_2
temp_1 = None
temp_2 = None
# continue with the rest of the function
如果我们在函数末尾执行此操作,答案是否会改变(因为我假设 python 本身会在此时执行此操作)?
【问题讨论】:
-
你在函数中做了多少其他工作?您要删除的对象有多大?顺便说一句,你可以在这里使用
del temp_1, temp_2。 -
但总的来说:听起来像是过早的优化。函数完成后,无论如何都会清除局部变量。
-
@SterlingArcher:非法的是
None = something,而不是something = None。 -
Martijn 的两个 cmets 都是正确的:
del temp_1几乎总是比temp_1 = None好(它表达了你正在尝试更好的东西),这很可能是一个过早的优化——另外,即使不是,您也可以通过将函数重构为单独的部分来做得更好,这样这些本地变量在范围内的时间就不会超过必要的时间……但是,是的,这会起作用。 -
@oxtay:那为什么不创建一个单独的函数来处理大数据呢?或者重构使用迭代器,而不是一开始就在内存中构建整个东西。