返回信息流弱菜一枚,前来求问~
之前在这个python tutorial网站(http://www.tutorialspoint.com/python/python_functions.htm)看到说是python里的参数传递方式都是传引用,就一直认为是传引用。
网站原话:“All parameters (arguments) in the Python language are passed by reference. It means if you change what a parameter refers to within a function, the change also reflects back in the calling function. ”
但是今天写程序时发现,
def func1(a):
a = 8
x = 1
func1(x)
print x
这个x没变,打出来还是1
def func2(l):
l.append(8)
list = [1, 2, 3]
func2(list)
print list
这个list变了,打出来是[1, 2, 3, 8]
那么是这个网站写错了么,还是我理解引用这个概念理解的不对??
python的参数传递到底用的什么方式呀?
这是一条镜像帖。来源:北邮人论坛 / python / #3554同步于 2014/10/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
[问题]python函数的参数是传值还是传引用啊?
xiaodiyue
2014/10/7镜像同步25 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
意思是a = 8的时候,a现在指示的已经不是x变量所指示的那块地方了,而是指示一个存有8的地方吗。。。?
【 在 binux 的大作中提到: 】
: 哦,不应该这么解释,应该是 = 是修改变量引用
def func1(a):
a = 8
x = 1
func1(x)
的意思是,把 1 的引用给 x,x 的引用传给 func1 中的变量 a,将 a 的引用改成 8
这里面和 x 有什么事?
【 在 xiaodiyue 的大作中提到: 】
: 意思是a = 8的时候,a现在指示的已经不是x变量所指示的那块地方了,而是指示一个存有8的地方吗。。。?
赶脚是这么个意思!。。。那要是想实现一个swap(a,b)该怎么做呢。。
【 在 ashjn2011 的大作中提到: 】
是不是这个意思,我不太了解python
好像是在函数里面要用Global
但是 a, b = b, a 就行了
【 在 xiaodiyue 的大作中提到: 】
: 赶脚是这么个意思!。。。那要是想实现一个swap(a,b)该怎么做呢。。
: 是不是这个意思,我不太了解python