Некоторые загадки о python изменчивости и неизменности - PullRequest
0 голосов
/ 31 марта 2020

Я запутался в следующих трех кодах.

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. затем третий (C), и я не могу понять почему «а» нельзя изменить на 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

Я знаю, что они могут иметь что-то с изменчивой или неизменной концепцией, но я не знаю четкой концепции, стоящей за три кода. Может ли кто-нибудь объяснить их? спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Вам нужно вернуть переменную, которую вы изменили внутри функции, чтобы она отражалась во внешних значениях

Например:

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)

То же самое для всех случаев, которые вы упомянули. вы не вернулись, ничего не меняется в печати, которая находится за пределами функции, и вы получаете неизмененные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...