Python 参数传递
Python的参数传递是赋值传递(passbyassignment),或者叫作对象的引用传递(passbyobjectreference)。在进行参数传递时,新变量与原变量指向相同的对象。下面先来看一下Python中可变和不可变数据类型赋值的例子。
1.不可变数据类型
整型(int)赋值:
a=1
print(id(a))
b=a
print(id(b))
a=a+1
print(id(a))
c=1
print(id(c))
执行结果:
140722100085136
140722100085136
140722100085168
140722100085136
其中id()函数用于返回对象的内存地址。
可以看到b,c都指向了相同的对象,而a=a+1并不是让a的值增加1,而是重新创建并指向了新的值为2的对象。最终结果就是a指向了2这个新的对象,b指向1,值不变。
2.可变数据类型
以列表(list)为例:
l1=[1,2,3]
print(id(l1))#
l2=l1
print(id(l2))
l1.append(4)
print(id(l1))
print(l1)
print(l2)
执行结果:
1933202772296
1933202772296
1933202772296
[1,2,3,4]
[1,2,3,4]
l1和l2指向相同的对象,由于列表是可变(mutable)数据类型,所以l1.append(4)不会创建新的列表,仍然指向相同的对象。由于l1和l2指向相同的对象,所以列表变化也会导致l2的值变化。
可变对象(列表,字典,集合等)的改变,会影响所有指向该对象的变量。对于不可变对象(字符串、整型、元组等),所有指向该对象的变量的值总是一样的,也不会改变。
以上内容为大家介绍了Python参数传递,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:开发教育。http://www.baikegou.com/
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!