Python中更多不必要的变量是否意味着更多的内存使用?

Python中更多不必要的变量是否意味着更多的内存使用?,python,variables,memory,memory-management,Python,Variables,Memory,Memory Management,假设我有如下代码: default_pos = (21,45) #I do some more stuff now, then change my mind to change the default_pos #So, I overwrite default_pos and assign something else to it default_pos = (756,600) 如果我声明了一个名为default\u pos\u的新变量,而不是这个变量,并将旧变量保持原样,会怎么样?这将意味着一

假设我有如下代码:

default_pos = (21,45)
#I do some more stuff now, then change my mind to change the default_pos
#So, I overwrite default_pos and assign something else to it
default_pos = (756,600)
如果我声明了一个名为
default\u pos\u的新变量,而不是这个变量,并将旧变量保持原样,会怎么样?这将意味着一个不必要的变量。那么,它不会比需要的占用更多的内存吗?现在,如果有数百个这样未使用的变量,这可能是一个问题,对吗?

您所称的变量实际上是对对象的引用。因此,使用像
default\u pos\u changed这样的新变量会消耗一些内存。但是,只有存储引用的内存,而不是对象本身

您可以查看GitHub上的。引用本质上是一个指针(和附加信息),所以它的大小大约是指针的大小。在64位机器上,它需要8个字节。与参考对象大小相比,它很小

编辑

您可以使用
del
释放内存:引用被删除,如果对象的引用数为nul,则根据垃圾收集器规则,对象分配的内存也可以释放

del default_pos_changed. # free the reference memory
del default_pos. # free the reference memory, the object can be garbage collected.
你所说的变量实际上是对一个对象的引用。因此,使用像
default\u pos\u changed这样的新变量会消耗一些内存。但是,只有存储引用的内存,而不是对象本身

您可以查看GitHub上的。引用本质上是一个指针(和附加信息),所以它的大小大约是指针的大小。在64位机器上,它需要8个字节。与参考对象大小相比,它很小

编辑

您可以使用
del
释放内存:引用被删除,如果对象的引用数为nul,则根据垃圾收集器规则,对象分配的内存也可以释放

del default_pos_changed. # free the reference memory
del default_pos. # free the reference memory, the object can be garbage collected.

你刚换了帖子,问了一个完全不同的问题:(抱歉,这有点不清楚答案不取决于语言,而是取决于解释器。
CPython
PyPy
IronPython
,…?我使用的是CPython,不喜欢IronPython的声音。使用CPython已经一年多了。永远不要解决问题变量:变量只有在运行时才知道,除非它们是全局变量或c变量onstant。堆内存分配方案用于管理运行时变量的内存分配和取消分配。您刚刚更改了帖子,提出了一个完全不同的问题:(抱歉,这有点不清楚答案不取决于语言,而是取决于解释器。
CPython
PyPy
IronPython
,…?我使用的是CPython,不喜欢IronPython的声音。使用CPython已经一年多了。永远不要解决问题变量:变量只有在运行时才知道,除非它们是全局变量或c变量onstant。堆内存分配方案用于在运行时管理变量的内存分配和取消分配。但是,保留一堆变量,特别是在全局范围内,意味着它们引用的对象不会被释放。这可能值得一提。但是,是的,即使是百分之一百的“不必要的"变量只会占用几千字节。谢谢,我已经知道了
del
,我只是对变量很好奇。但是,保留一堆变量,特别是在全局范围内,意味着它们引用的对象不会被释放。这可能值得一提。但是的,即使是百分之一百的“不必要的”变量只会占用几千字节。谢谢,我已经知道了
del
,我只是对变量很好奇。