为什么在Python中将模块级代码放入函数并调用它更快?

6 投票
1 回答
613 浏览
提问于 2025-04-17 05:53

在Alex Martelli对将Python脚本变成面向对象的回答中,他提到把模块级别的代码放进一个函数里,然后再调用这个函数,在Python中会更快。有人能解释一下为什么这样做吗?这对所有的Python实现都适用吗?

1 个回答

8

这主要是因为变量查找的方式。在全局范围内查找一个变量需要通过字典来查找。而在局部范围内,编译器会静态地确定变量的名字,并通过索引来引用它们,这样就不需要查字典了。

需要注意的是,在Python 2.x中,如果在一个函数内部使用了exec语句,这种优化就会失效,因为变量的名字无法静态确定。而在Python 3.x中,exec()被当作一个普通的函数使用,因此它不能改变局部范围内的变量。

撰写回答