Python中修改字典为何无需重新赋值?何时需执行赋值操作?
为什么无需赋值就能修改字典D?
这是因为Python里的字典属于可变对象,当你把可变对象作为参数传递给函数时,传递的是对象的引用,而非对象的拷贝。也就是说,main.py里的D和foo.py函数参数里的D指向的是同一个字典对象。
结合你的代码来看:
- 在
main.py中创建空字典D = {} - 调用
foo.add_key(D)时,把这个字典的引用传给了函数 - 函数内部执行
D['key'] = 'value',直接在原字典对象上添加了键值对 - 函数虽然返回了修改后的字典,但因为操作的是同一个对象,所以
main.py里的D已经被修改,不需要再用D = foo.add_key(D)赋值
如果换成整数、字符串这类不可变对象,情况就不一样了——不可变对象无法被修改,函数里的操作会生成新的对象,这时候就需要赋值才能拿到新对象。比如:
# 不可变对象示例 def add_one(num): num += 1 return num n = 1 add_one(n) print(n) # 输出1,原对象未变化 n = add_one(n) print(n) # 输出2,赋值后拿到新对象
内容的提问来源于stack exchange,提问作者clueless
相关产品推荐
相关产品推荐

