我对以下3个代码感到困惑。
1。第一个对我来说很直观,直到我看到(B):
((A)
def change (mylist):
mylist[0] = 33
mylist[1] = 44
mylist[2] = 55
print("inside the function",mylist)
alist = [10,20,30]
change(alist)
print("outside the function",alist)
输出为:
在函数[33,44,55]内部
函数[33,44,55]之外
2。我看到(B)时,很难分辨(A)和(B)的区别。
(B)
def change2 (mylist):
mylist = [33,44,55]
print("inside the funcion",mylist)
blist = [10,20,30]
change2(blist)
print("outside the funcion",blist)
输出为:
在函数[33,44,55]内部
函数[10,20,30]之外
3.then,第三个是(C),我不知道为什么不能将“ a”更改为5。
(C)
def change3(mylist,number):
mylist[0] = 33
mylist[1] = 44
mylist[2] = 55
number = 5
print("inside the function",mylist,number)
clist = [10,20,30]
a = 50
change3(clist,a)
print("outside the function",clist,a)
输出为:
在函数[33,44,55] 5内部
函数[33,44,55] 50之外
我知道它们可能具有可变或不变的概念,但是我不知道这三个代码背后的明确概念。有人可以解释吗?谢谢。
您需要返回在函数内部修改的变量,以使其反映在外部值中
例如:
def change3(mylist,number):
mylist[0] = 33
mylist[1] = 44
mylist[2] = 55
number = 5
return mylist, number
clist = [10, 20, 30]
a = 50
output = change3(clist, a)
print("outside the function", output)
与您提到的所有情况相同。由于您尚未返回,因此函数外的打印内容没有任何变化,您将获得未修改的值。