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注意点

python—可变对象与不可变对象 参数传递

Python值传递和引用传递(详细分析)

python中的值传递和引用传递(可变对象与不可变对象)也就是赋值的原理-python全部是引用传递

python 引用

Python中的可变不可变对象和赋值技巧序列解包