关于函数参数能不能在函数里被改变。
我自己的理解是:如果函数内部出现过赋值语句,则意味着新的对象被生成,函数入参所指向的对象就改变了。这时,再改变,也只是操作的新生成的对象。
测试代码如下:
#!/usr/bin/python3
# -*-coding:utf-8 -*-
# 可写函数说明
def changeme( mylist ):
"修改传入的列表"
b=mylist
print(id(b))
print(id(mylist))
mylist[1]="Hello World!"
print("函数内取值1: ", mylist)
print("b:",b)
mylist.append([1,2,3,4])
#mylist=[1,2,3,4]
print("函数内取值2: ", mylist,b)
mylist=[11,21,31,41]
print("函数内取值3: ", mylist,b)
return
# 调用changeme函数
mylist =[10,20,30]
changeme( mylist )
print("函数外取值: ", mylist)
输出结果:
55061120
55061120
函数内取值1: [10,'Hello World!',30]
b:[10,'Hello World!',30]
函数内取值2: [10,'Hello World!',30,[1,2,3,4]][10,'Hello World!',30,[1,2,3,4]]
函数内取值3: [11,21,31,41][10,'Hello World!',30,[1,2,3,4]]
函数外取值: [10,'Hello World!',30,[1,2,3,4]]