栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python是否会优化掉仅用作返回值的变量?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python是否会优化掉仅用作返回值的变量?

不, 不是

CPython字节码的编译仅通过小型的猫眼优化器传递,该优化器仅用于基本优化(有关这些优化的更多信息,请参见测试套件中的test_peepholer.py)。

要查看实际发生的情况,请使用

dis
*查看生成的指令。对于第一个函数,包含分配:

from dis import disdis(func)  20 LOAD_ConST    1 (42)   2 STORE_FAST    0 (a)  34 LOAD_FAST     0 (a)   6 RETURN_VALUE

而对于第二个功能:

dis(func2)  20 LOAD_ConST    1 (42)   2 RETURN_VALUE

第一个中使用了另外两个(快速)指令:

STORE_FAST
LOAD_FAST
。这些可以快速存储和获取
fastlocals
当前执行帧数组中的值。然后,在两种情况下
RETURN_VALUE
都执行a。所以,第二个是曾经如此
轻微 ,由于执行需要更少的命令更快。

通常,请注意CPython编译器在执行的优化中是 保守 的。它 并没有
像其他编译器一样聪明(通常也有更多的信息可以使用)。除了显然是正确的之外,主要设计目标是:a)保持简单,b)尽可能快地进行编译,因此您甚至不会注意到存在编译阶段。

最后,您不应该为像这样的小问题而烦恼。速度的好处是微小的,恒定的,并且与解释Python事实所带来的开销相形见war。

*

dis
是一个小的Python模块,可反汇编您的代码,您可以使用它查看VM将执行的Python字节码。

注意: 正如@Jorn
Vernee的评论中所述,这特定于Python的CPython实现。如果其他实现愿意的话,其他实现可能会进行更积极的优化,而CPython则不会。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611254.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号