码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-08-03 14:19:25      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:输入参数   修改   list   字符串   可变   lis   span   app   产生   

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 函数传递可变不可变对象

标签:输入参数   修改   list   字符串   可变   lis   span   app   产生   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!