Niedawno poszłam na rozmowę kwalifikacyjną na stanowisko programisty w Pythonie. Poniższy kod był jednym z pytań. Po prostu musiałem napisać wynik.Czy ktoś może wyjaśnić mi ten naprawdę podstawowy kod Pythona?
def extendList(val,list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print "list1 = %s " %list1
print "list2 = %s " %list2
print "list2 = %s " %list3
Wyjście jest:
list1 = [10, 'a']
list2 = [123]
list2 = [10, 'a']
Próbuję zrozumieć, dlaczego pierwsza lista, list1
ma wartość 'a'
.
EDIT
Sprawdziłem wszystkie linki i okazało się jego pytona „haczyka” dla początkujących, ale chcę podziękować odpowiedzi, can not wybierać zarówno tak mam zamiar z pierwszej.
[ Ta odpowiedź kanoniczna] (http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument) powinna pomóc –
Duplikat http://stackoverflow.com/q uestions/1132941/najmniej-zdziwienie-w-python-the-mutable-default-argument – davidism
To, że jest inaczej sformułowane, nie czyni z niego innego pytania. – davidism