|
各位前辈你们好,小弟最近对于python赋值、地址以及函数参数传递有一些疑惑,自己也百度了一些东西,但是还是不太明白,就注册了一个账号想来请教大家。
具体问题就是 python在函数中参数是值传递还是引用传递,这个我百度了一些说法,有的说本质还是值传递,有的说引用传递,还有的说如果可变就是值传递,不可变就是引用传递。
这个我自己也实验了一下,简单的定义了一个函数,传入了我自己创建的一个int型变量a=1,实际上在我的理解上,我认为我是可以修改a的值的,也就是我可以重新给a赋值(例如a=2)。我在函数中对a重新赋值,但是函数外中的a并没有修改,根据我找的资料,那么a应该是不可变的?
此外,我也理解一点指针和地址的相关知识,我尝试打印函数外的a和函数内的a的地址(使用的id函数),发现这两个地址都是一样的,那么我认为两个a指向的都是同一个地址空间,为什么我对a进行操作,外面的a无法改变呢?并且我查到python的赋值“=”其实就是将赋值的变量地址指过去。
我知道例如list或者字典传入的话是可以修改的。但是为什么例如a=1或者a='1'不可以?这个算是元组吗?那么为什么我可以重新给它赋值?还是说id拿到的并不是类似C语言的地址?中间有什么技术细节吗?如果有链接就更好了,非常感谢
|
|