Python变量传递以及内存地址的改变问题

最近新学习Python,其变量的不需定义类型真是让我一头包。


#coding=utf-8

def test(num):
    print(str(id(num))+"   >>>   2")
    num = 100
    print(str(id(num))+"   >>>   3")

num = 200
print(str(id(num))+"   >>>   1")
test(num)
print(str(id(num))+"   >>>   4")
1698577328   >>>   1
1698577328   >>>   2
1698574128   >>>   3
1698577328   >>>   4

习惯了java的字符串拼接,所以直接转换成字符串输出了。

通过输出我们可以看到1,2,4的内存地址都是一样的,3的发生了改变。我们一步步的解析这个过程:

1:创建一个变量num,值为200,内存地址为1698577328.

2:进入test方法,将num的引用传递给test方法的形参num,所以形参num指向的内存地址跟传递给他的num一样,所以输出为1698577328。

3:开辟一块内存,存的值为200,并且将形参num指向这块内存,所以形参num值变为200,并且指向的内存地址改变为169857412

你可能感兴趣的:(python)