今天爱分享给大家带来为什么在Python的函数中,代码运行速度更快【面试题详解】,希望能够帮助到大家。
你可能要问为什么在存储在本地变量的比全局变量运行速度更快。这是一个CPython执行细节。
记住Cpython在解释器运行时,是编译成字节编码的。当一个函数编译完成,本地变量就全部被存储在一个固定长度的数组中了(而不是字典)而且名字被指定了索引。这是合理的,因为你不能自动添加本地变量到你的函数中去。在指针中循环检索一个本地变量加入到列表中,并且计算琐碎的PyObject的增加。
不同的是全局查找(LOAD_GLOBAL),是一个涉及哈希查找的字典等等。顺带的,这就是为什么当你需要一个全局变量时,要说明global i。如果你曾经在一个范围内给一个变量赋值了,那么编译器会为它的入口发布一些STORE_FAST。除非你告诉它不要这样做。
顺便说一句,全局查找仍然是非常棒的。属性查找foo.bar是非常慢的。