python 函数传递可变不可变对象
Posted limetloveblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]]
以上是关于python 函数传递可变不可变对象的主要内容,如果未能解决你的问题,请参考以下文章
python中的引用传递,可变对象,不可变对象,list注意点