为什么python中的局部函数更快?如何证明?

为什么python中的局部函数更快?如何证明?,python,Python,当我读到500行时,它说: 将它(方法)放在一个本地文件中可以节省我们另一小部分时间,因为本地文件比内置文件更快 然后我编写一个测试,如下所示: import timeit if __name__ == '__main__': _r = 5 _n = 1000000 s = str print(timeit.repeat("s(112)", setup="from __main__ import s", repeat=_r, number=_n)) p

当我读到
500行时,它说:

将它(方法)放在一个本地文件中可以节省我们另一小部分时间,因为本地文件比内置文件更快

然后我编写一个测试,如下所示:

import timeit

if __name__ == '__main__':
    _r = 5
    _n = 1000000
    s = str

    print(timeit.repeat("s(112)", setup="from __main__ import s", repeat=_r, number=_n))
    print(timeit.repeat("str(112)", repeat=_r, number=_n))

# 1.test s,then str
# [0.22136712074279785, 0.18772411346435547, 0.16153311729431152, 0.15581107139587402, 0.1546940803527832] s
# [0.19046807289123535, 0.1990509033203125, 0.19870710372924805, 0.18471217155456543, 0.1823439598083496] str

# 2. test str,then s
# [0.2088918685913086, 0.18737316131591797, 0.1878829002380371, 0.20372295379638672, 0.20828890800476074] str
# [0.15288996696472168, 0.158311128616333, 0.16825199127197266, 0.15237903594970703, 0.152756929397583] s
有人能解释一下吗 为什么第一次重复
s
会花费更多的时间?
以及如何调试函数调用?

您阅读了上一段吗

str的捷径也是一个微观优化。Python中的名称可以 对于函数来说是本地的,对于模块来说是全局的,或者对于Python来说是内置的。 查找本地名称比查找全局或全局名称要快 内置的。我们已经习惯了str是一个内置的 可用,但Python仍然必须在每次使用时查找名称str 使用。把它放在一个本地文件中可以节省我们另外一小部分时间 因为当地人比建筑更快


免责声明:不要求索赔的准确性。

强调“小”一词。这种节省时间的方法不值得费心。