You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中变量自我赋值是否会触发实际内存赋值及性能影响?

自赋值操作的编译执行逻辑

你提到的a_list = a_list这类自赋值操作,在标准CPython解释器中不会被优化跳过,会生成真实的赋值字节码指令执行。不过Python的变量赋值本质是修改引用指向,仅操作指针地址,本身开销极低,不需要过度担心。

两段代码的性能对比

你给出的两段函数实现,理论上三元表达式的写法确实存在额外开销:

  • 普通if分支写法:仅当a_list is None为真时才执行赋值操作,a_list有传入值时没有额外操作
    def foo(a_list: list = None):
        if a_list is None:
            a_list = ['default', 'list', 'values']
    
  • 三元表达式写法:不管a_list是否为None,都会执行一次赋值操作,当a_list不为None时就会多执行一次无意义的自赋值
    def foo(a_list: list = None):
        a_list = ['default', 'list', 'values'] if a_list is None else a_list
    

不过要注意的是,这个额外的自赋值开销极其微小,普通业务场景下完全观测不到差异,只有在函数被超高频调用(比如每秒调用数十万次以上)的场景下才会有可感知的影响。如果追求极致性能,优先选择if分支的写法即可。

内容的提问来源于stack exchange,提问作者LarsJaeger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:09:11