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

Python直接传数字与赋值变量后传参哪种存储占用更低

两种Python函数调用方式的存储空间占用对比

先上明确结论:直接传入数字的方法1存储空间占用更小,但二者的内存差距极小,不存在“变量额外存储数字本身”的情况。

两种写法的参考代码如下:

def add(a,b):
   print(a+b)
# 方法1:直接传入数字调用
add(2,3)
# 方法2:先赋值给变量再传参调用
a = 2
b = 3
add(a,b)

核心原理拆解

首先要明确Python的变量本质和小整数缓存规则:

  • Python中所有变量都不是“存储值的盒子”,只是绑定到内存对象的名字标签,赋值操作不会复制对象本身,只是给已有对象新增一个名字引用。
  • Python默认对-5~256区间的小整数做全局驻留缓存,代码里不管写多少次2、3,指向的都是内存中提前创建好的同一个整数对象,不会重复生成新的整数实例,这部分内存开销两种写法完全一致。

两种写法的实际内存差异

两种写法的内存差只来自变量绑定的命名空间开销:

  • 方法1执行时,解释器直接在函数调用栈帧里传入对缓存整数2、3的引用,不会在当前作用域(比如全局作用域)新增额外的名字绑定,调用结束后栈帧销毁,相关引用直接回收,无额外常驻开销。
  • 方法2在调用函数前,会在当前作用域的命名空间字典里新增a、b两个条目,每个条目存储变量名的字符串和对应对象的内存指针(64位Python下单个指针占8字节),这部分就是方法2多出来的内存开销,总大小只有十几字节,几乎可以忽略。
    • 如果a、b是在局部作用域(比如另一个函数内部)定义的,作用域执行结束后这部分命名空间空间会被立刻回收,不会长期占用内存。
    • 如果a、b定义在全局作用域,这部分微小开销会持续到程序退出。

不存在“使用变量会额外存储数字副本”的情况,多占的仅仅是命名空间里存名字和引用指针的极小空间,日常开发中完全不需要为了这点开销刻意避免使用变量,优先保证代码可读性即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:48:17