我用python写了下面的代码
class check(object):
def __init__(self):
self.a = [1,2,3,4]
self.b = 5
appending(self.a, self.b)
print "a", self.a
print "b", self.b
def appending(a,b):
a.append(5)
b +=1
如果现在我运行 check() 函数,我得到如下输出:
a [1,2,3,4,5] [1,2,3,4,5]
b 5 5
所以,我有以下问题
为什么更新了 list(a) 而没有更新 int(b)?
这与我修改了a但是我在b中添加1时创建了新对象有关,简而言之,它是不可变或可变数据类型的区别。
我在对象中定义了 self.a 和 self.b,我在函数中定义了 a,b,那么为什么我可以在对象中编写 print a 和 print b,得到与 self.a 和 self 相同的输出.b
请您参考如下方法:
self.b 是整数 5 的名称。整数是一个不可变的对象。
当您看似要改变 b 时,您实际上创建了一个新对象 6 并为其分配了 b 作为名称。这绝不会影响对象 5,self.b 是其名称。
