Python什么是值或引用函数参数

时间:2023-06-04 21:30:08

这篇文章是Python前往遇到有疑问的功能。

下面一段是原有的基础教程Python函数

按值传递參数和按引用传递參数

全部參数(自变量)在Python里都是按引用传递。假设你在函数里改动了參数,那么在调用这个函数的函数里,原始的參数也被改变了。比如:

#!/usr/bin/python

# 可写函数说明
def changeme( 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]]

好。看到这里。自己亲手測试一下,代码:

def printme(age,str):
str = 'str changed!'
print age,str
return str = 'ori str'
age = 23
printme(age,str)
print str

输出结果:

23 str changed!
ori str

好像哪里不正确啊!不是说函数内部改动了參数的值,那么实际參数也会变吗?!

难道它对字符串和列表等还不是同等对待?

有经验的人都知道,在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是能够改动的对象

那么,就记住红色文字的这句话吧,你想改动不可更改的对象时。事实上就开辟了一个新新对象的存储空间,这就是为什么有问题的全球范围和局部范围。

版权声明:本文博客原创文章,博客,未经同意,不得转载。