Python:为什么只调用“f”比“f()”快4倍?
我刚刚看到Alex Martelli今晚演示了这个。我没听清他为什么在这里有一个在速度如此大的差异的解释,我还是很好奇:Python:为什么只调用“f”比“f()”快4倍?
% python -mtimeit -s'def f(): pass' 'f()'
10000000 loops, best of 3: 0.121 usec per loop
% python -mtimeit -s'def f(): pass' 'f'
10000000 loops, best of 3: 0.0265 usec per loop
那么,为什么f
跑这么远快于f()
?无可否认,这个例子有点做作,因为我不知道它是否推广到没有任何参数的所有可能的函数。这里隐藏着什么?
f
什么也没做。它不叫f
。你可能也有
def f(): pass
"foo"
为了进一步详细描述,这里是在交互模式下运行的输出:
>>> def f(): print("Foo!")
...
>>> f()
Foo!
>>> f
<function f at 0x10ebe9830>
>>>
好吧,这很尴尬。下次我会实际运行代码。谢谢! –
@abarkingspider如果您的问题现在已解答,请随时[接受最值得回答的答案](http://meta.stackexchange.com/a/5235)。 – user4815162342
当你刚刚进入f
它只是调用对象上,并没有做任何事情,当你叫f()
它实际上执行的功能
当你将它输入一个解释你会发现一个区别:
def f():
print "foo"
f
>>> <function f at 0x02D64670>
f()
>>> foo
因为你不知道你在做什么。第一行执行f()方法。这就是为什么()被使用。第二行是无所事事。奇怪的问题 –