这不是一个特定于任何代码的问题,也不是我遇到的问题,但为了知识起见,我想知道。在
我有以下代码:
# list1 and list2 are determinied off the screen
if len(list1) > 0:
cycler = list1
elif len(list2) > 1:
cycler = list2
else:
cycler = []
for id in cycler:
t = Thing._by_id(id)
# a lot of stuff done with t
在第三种情况下,其中cycler = []
,是在for循环上花费的资源/时间,还是for循环立即中断?我一点也不担心,事实上,我在一个函数中有这个,它在else子句中,我只是好奇。在
不是我的代码,但是如果我们看看这里,我们会发现时间被用来创建这个“空列表”。在
至于实际迭代列表,是的,这也会消耗资源。解释程序至少必须知道列表是空的,所以它必须进入内存位置以查看它是空的。在
如果你问Python解释器是否能够通过完全跳过循环来优化,我想答案是否定的。如果你在一个空列表上查看迭代的字节码,那么所有的循环设置步骤仍然完成,并且为循环内的代码生成字节码(尽管它不会实际执行):
相关问题 更多 >
编程相关推荐