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

python 函数参数传递

时间:2014-12-11 17:20:37      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:python   函数参数传递 可变对象 不可变对象   

参数传递:

参数的传递是通过自动将对象赋值给本地变量来实现的,作为参数被传递的对象从不自动拷贝

在函数内部的参数名的赋值不会影响调用者

改变函数的可变对象参数的值也许会对调用者有影响(实质:不可变对象(如字符串 简单类型 元组)是通过‘值‘进行传递的,可变对象如字典 列表是通过‘指针‘进行传递的)

>>> def change(a,b):
a=2
print id(b)
print b
b[0]=‘spam‘
print b

>>> x=1
>>> l=[1,2]
>>> change(x,l)
27900424
[1, 2]
[‘spam‘, 2]
>>> b


Traceback (most recent call last):
  File "<pyshell#87>", line 1, in <module>
    b
NameError: name ‘b‘ is not defined
>>> id(l)
27900424
>>> 
b是一个本地变量名,但是它被传给了一个可变对象,因为第二个赋值是在原处发生的对象的改变,对函数中的b[0]进行赋值的结果会在函数返回后影响L的值,实际上我们没有修改b,我们修改的是b当前所引用的对象的一部分,并且这个改变将会影响调用者

python 函数参数传递

标签:python   函数参数传递 可变对象 不可变对象   

原文地址:http://blog.csdn.net/u012829152/article/details/41868967

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