关于python易变性和不可变性的一些困惑
我对以下3个代码感到困惑 1.第一个对我来说是直观的,直到我看到(B): (A) 输出为: 函数内部[33,44,55] 在功能之外[33,44,55] 正如我看到的(B),我很难分辨(A)和(B)的区别 (B) 输出为: 函数内部[33,44,55] 在功能之外[10,20,30] 那么,第三个是(C),我不明白为什么“a”不能改成5 (C) 输出为: 函数[33,44,55]内部5 在功能之外[33,44,55]50关于python易变性和不可变性的一些困惑,python,computer-science,immutability,mutable,Python,Computer Science,Immutability,Mutable,我对以下3个代码感到困惑 1.第一个对我来说是直观的,直到我看到(B): (A) 输出为: 函数内部[33,44,55] 在功能之外[33,44,55] 正如我看到的(B),我很难分辨(A)和(B)的区别 (B) 输出为: 函数内部[33,44,55] 在功能之外[10,20,30] 那么,第三个是(C),我不明白为什么“a”不能改成5 (C) 输出为: 函数[33,44,55]内部5 在功能之外[33,44,55]50 我知道他们可能有一些可变或不可变的概念,但我不知道这三个代码背后的明确概念
我知道他们可能有一些可变或不可变的概念,但我不知道这三个代码背后的明确概念。有人能解释一下吗?谢谢。您需要返回您在函数内部修改的变量,以便它反映在外部值中 例如:
对于您提到的所有情况都是一样的。因为您没有返回,所以函数之外的打印内容没有任何变化,您得到的是未修改的值。不,实际上我不想更改,我只想知道这些代码背后的概念
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)
def change2 (mylist):
mylist = [33,44,55]
print("inside the funcion",mylist)
blist = [10,20,30]
change2(blist)
print("outside the funcion",blist)
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)
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)