Mam następujący kod i zmiennych, i chcę, aby znaleźć to, co zmienne a
, a1
, a2
, b
, b1
i b2
znajdują się po kod został wykonany.realokacja zmienne w Pythonie
def do_something(a, b):
a.insert(0, "z")
b = ["z"] + b
a = ["a", "b", "c"]
a1 = a
a2 = a[:]
b = ["a", "b", "c"]
b1 = b
b2 = b[:]
do_something(a, b)
Moja próba rozwiązania jest następująca:
a = ["z", "a", "b", "c"]
a1 = ["a", "b", "c"]
a2 = ["a", "b", "c"]
b = ["z" "a", "b", "c"]
b1 = ["a", "b", "c"]
b2 = ["a", "b", "c"]
Ale rzeczywista rozwiązaniem jest:
a = ["z", "a", "b", "c"]
a1 = ["z", "a", "b", "c"]
a2 = ["a", "b", "c"]
b = ["a", "b", "c"]
b1 = ["a", "b", "c"]
b2 = ["a", "b", "c"]
Czy ktoś może mi chodzić przez moją pomyłkę?
w jakim punkcie czy znajdujesz/drukujesz wartości wszystkich zmiennych? Być może ma to coś wspólnego z zasięgiem – Totem
Myślę, że przez "moje usiłowanie rozwiązania" masz na myśli "to, czego się spodziewam" ... czy to prawda? To może wyjaśnić pewne zamieszanie. – Ajean
Przeczytaj [to] (http: // stackoverflow.com/questions/1132941/najmniej-zdziwienie-w-python-the-mutable-default-argument) może pomóc zrozumieć, dlaczego tak się stało – Anzel