首页 > 编程知识 正文

Python引用变量,python变量名称引用变量

时间:2023-05-03 17:44:17 阅读:235328 作者:1548

引言:
对于刚接触Python语言的同学来说,可能不太了解Python中参数赋值的机制:在Python中,对一个变量的赋值,实际上是修改了数据的引用。 本文将在下面举几个例子来帮助说明该机制

首先我们来证明一下,对于变量的赋值实际上是修改了数据的引用这个描述:


从ipython的运行结果中,我们可以看出,当给一个变量赋值时,其实对于该变量a而言,只是一个标签(数据的引用),类似于下图
而将以赋值的变量a赋给另一个新变量b时,实际上,对于该新变量b而言,依然是该以赋值变量a所对应的常量10的一个标签,类似于下图
所以当我们修改a的值,并不会修改b的引用,只是简单地把a修改为了新值20的引用,此时对应的图示为

函数参数的传递:
结论:对于Python中函数参数的传递,这一点有别于其他语言,他传递的是实参所对应的引用而不是实参所对应的值。
我们用一个测试程序来帮助说明:
[Note:python中的id函数返回的结果是该参数对应的内存地址]

def printID(para):print("Input para's id is {}".format(id(para)))para = 10print("10's id is {}".format(id(para)))printID(para)-------------------------输出结果:10's id is 1746174320Input para's id is 1746174320

由此可见,在传递参数时,确实传递的是引用。

函数返回值的传递:
结论:函数在传递返回值时,也是传递该参数对应数据的引用。
我们用一个测试程序来帮助说明:

def printID():r = 2print("2's id = {}".format(id(2)))return rr = printID()print("r's id = {}".format(id(r)))---------------------------------输出结果:2's id = 1746174064r's id = 1746174064

由此可见,函数在传递返回值确实传递也是该参数对应数据的引用。

函数内部参数值的修改:
结论:函数中若对传入的参数进行修改,只会在函数中生效,而无法改变传入的实参值:
我们用一个测试程序来帮助说明:

def test(num):num = 10print("function's num = {}".format(num))gl_num = 1test(gl_num)print("num = {}".format(gl_num))----------------------------------输出结果:function's num = 10gl_num = 1

为了方便大家更好地理解,我将用下图说明:


再未执行函数中num = 10这一语句时,两个"标签":num和gl_num的引用图示为红线,当执行num = 10后,num就指向了10对应的内存地址,而gl_num指向的地址依旧不变。此外,这也能从另一方面说明,函数中传递的参数与实参并不是同一个"标签",只是对于某一个地址的两个不同的"标签"。

如果觉得我有地方讲的不好的或者有错误的欢迎给我留言,谢谢大家阅读(点个赞我可是会很开心的哦)~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。