python 函数传递可变不可变对象


python 函数的参数传递:

不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。
如fun(a),传递的只是a的值,没有影响a对象本身。
比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

可变类型:类似 c++ 的引用传递,如 列表,字典。
如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

python 传不可变对象实例:

 

#!/usr/bin/python3
 
def ChangeInt( a ):
 #这里的a与下一行的a没有关系,只是代表了函数输入参数的值,是一个对象不是变量名
    a = 10
#这里产生一个函数内部的变量a并赋值
b = 2
ChangeInt(b)
print( b ) # 结果是 2

 

传可变对象实例

可变对象在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。例如:

#!/usr/bin/python3
 
# 可写函数说明
def changeme( mylist ):#这里传进来的mylist是函数输入参数对应的列表对象,列表里的值是可以改变的
   "修改传入的列表"
   mylist.append([1,2,3,4])   #修改列表里的值
   print ("函数内取值: ", mylist)
   return
 
# 调用changeme函数
mylist = [10,20,30]
changeme( mylist )
print ("函数外取值: ", mylist)

传入函数的和在末尾添加新内容的对象用的是同一个引用,都是那个列表对象。故输出结果如下:

函数内取值: [10, 20, 30, [1, 2, 3, 4]] 函数外取值: [10, 20, 30, [1, 2, 3, 4]]

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM