根据对象的引用来传递,根据对象是可变对象还是不可变对象,得到两种不同的结果:
-可变对象,则直接修改。
-不可变对象,则生成新对象,让形参指向新对象.
# 不可变对象生成新对象,让形参指向新对象;可变对象直接修改.
def test_a(x):
x += 1
a = 1
test_a(a)
print(a) # 1
def test_b(x):
x.append(4)
b = [1, 2, 3]
test_b(b)
print(b) # [1, 2, 3, 4]
# 创建了新的对象,所以两者都未变化
def test_a(x):
x = 2
a = 1
test_a(a)
print(a) # 1
def test_b(x):
x = [3, 2, 1]
b = [1, 2, 3]
test_b(b)
print(b) # [1, 2, 3]