Skip to main content
 首页 » 编程设计

python之在 Python 中重用名称以节省内存

2025年05月04日1152php

The Hitchhiker’s Guide to Python声明重用变量名是件好事。

foo = Spam() 
bar = foo.eggs() 

我同意它。它使代码可读。

如果变量是 40 MB 的数据怎么办?它会复制自身并总共有 80 MB 吗?

foo = buffer  # 40 MB. 
bar = foo.resize((50, 50))  # +40? 

我知道当函数执行时内存会被释放,但我仍然不认为仅仅因为可读性而在应用程序的一种状态下使用两倍的内存是个好主意。这就像一个特例,但另一方面,特例还不够特别,是吧?

请您参考如下方法:

Python 赋值只是将引用值复制到目标对象。没有数据复制。 Python 变量只是 Python 系统字典中的名称加上作为对象引用值的值。

实际上,你应该小心分配。任何 Python 赋值都意味着共享引用值。 Python 赋值绝不意味着复制目标对象。当处理字符串或数字等不可变对象(immutable对象)时,不会出现任何问题。但是,当您分配任何可变对象(列表、字典、集合、某些用户对象)时,您应该知道之后您只是给目标对象一个不同的名称(通过引用值的另一个副本访问)。

这同样适用于将对象作为函数/方法参数传递。