关于python可变和不可变的一些难题

问题描述 投票:-2回答:1

我对以下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之外

我知道它们可能具有可变或不变的概念,但是我不知道这三个代码背后的明确概念。有人可以解释吗?谢谢。

python computer-science immutability mutable
1个回答
0
投票

您需要返回在函数内部修改的变量,以使其反映在外部值中

例如:

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)

与您提到的所有情况相同。由于您尚未返回,因此函数外的打印内容没有任何变化,您将获得未修改的值。

© www.soinside.com 2019 - 2024. All rights reserved.