python中对象全都是引用。在函数中修改参数可能达不到预期的效果。
def tf1(a):
a = 10
t = 0
tf1(t)
print(t) # 没变,0
def tf2(a):
a = "abc"
t = "123"
tf2(t)
print(t) # 没变,123
def tf3(a):
a.append(10)
t = []
tf3(t)
print(t) # 变了,[10]
def tf4(a):
a = [1, 2, 3]
t = []
tf4(t)
print(t) # 没变,[]
def tf5(a):
a = {"A": 10, "B": 20}
t = {}
tf5(t)
print(t) # 没变,{}
def tf6(a):
a['C'] = 30
t = {}
tf6(t)
print(t) # 变了,{'C': 30}
运行结果如下:
我们的结论便是:参数的都是指针常量 T * const,也就是本身指向的位置不可改,但是其指向的位置中的内容可以改,当然还需要python提供了修改的接口。