关于python易变性和不可变性的一些困惑

关于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 我知道他们可能有一些可变或不可变的概念,但我不知道这三个代码背后的明确概念

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