def add(num):
print('-------------')
print(num, id(num))
num += 2
print(num, id(id))
return num
n = 100
print(n, id(n)) ### 这一行应该写的是 print(n, id(num))
rest = add(n)
print(rest, id(rest))
print(n, id(n))
运行结果:
100 1649703040
————————————
100 1649703040
102 2174601690064 #这里地址跟另外3个不一样 其实就是因为写错了,写成了 id(id)
102 1649703104
100 1649703040
当我改过来以后,运行结果是这样的:
100 1649703040
——————————————
100 1649703040
102 1649703104
102 1649703104
100 1649703040
因此可以这么总结, python中,函数是传引用,即被调函数内的形参num直接指向了 n,,然后假设需要改变n的值,,实际上是没办法改变的,,只能新建一个对象,,最后返回的时候依然传引用,,因此把 新建对象的地址传回给n,,导致 n这个引用也改变了。
老师,不知道我这样分析对不对呢?