首页 > 编程语言 > 详细

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

时间:2018-08-03 13:49:42      阅读:175      评论:0      收藏:0      [点我收藏+]
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 函数传递可变不可变对象

原文:https://www.cnblogs.com/limetloveblog/p/9412996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!