Recentemente, sono andato a un colloquio di lavoro per una posizione sviluppatore Python. Il seguente codice era una delle domande. Ho appena dovuto scrivere l'output.Qualcuno può spiegarmi questo codice Python veramente di base?
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
L'output è:
list1 = [10, 'a']
list2 = [123]
list2 = [10, 'a']
Sto cercando di capire perché il primo elenco, list1
, ha il valore 'a'
.
EDIT
ho controllato tutti i link e ho scoperto la sua un pitone "Beccato" per principianti, ma voglio ringraziare le risposte, non riuscite a scegliere sia così ho intenzione con il primo.
[ Questa risposta canonica] (http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument) dovrebbe aiutare –
Duplicato di http://stackoverflow.com/q uestions/1132941/least-astonishment-in-python-the-mutable-default-argomento – davidism
Solo perché è formulato in modo diverso non ne fa una domanda diversa. – davidism