【发布时间】:2020-11-30 14:15:23
【问题描述】:
def f(b, a=[]):
a.append(b)
print('a : ', a)
f(1)
f(2)
# >> a : [1]
# >> a : [1, 2]
我认为变量 'a' 保留在内存中,因为 GC 或引用计数没有激活。
def f(b, a=''):
a += b
print('a : ', a)
f('1')
f('2')
# >> a : 1
# >> a : 2
这个函数的结果是不同的。每次调用函数时都会初始化变量a。
调用函数后保留字典、集合、列表的内存。但是int,字符串被清除了。 是不同的内存分配系统吗?
【问题讨论】:
-
简而言之:
list.append就地修改对象。但是 Python 字符串是不可变的,+=创建并分配了一个新值。 -
@KonradRudolph 非常感谢!
标签: python memory memory-management