"Dlaczego byłoby powrócić ['yes']
"
Bo zmodyfikował listę, example
.
"mimo że nie zmieniam bezpośrednio zmiennej" przykład "."
Ale jesteś, dostarczyłeś obiekt nazwany przez zmienną example
do funkcji. Funkcja zmodyfikowała obiekt, korzystając z metody obiektu: append
.
Jak to omówiono w innym miejscu na SO, append
nie tworzy nic nowego. Modyfikuje obiekt w miejscu.
Zobacz Why does list.append evaluate to false?, Python append() vs. + operator on lists, why do these give different results?, Python lists append return value.
i jak mogę zmodyfikować kod, aby "przykład" nie był wykonywany przez funkcję?
Co przez to rozumiesz? Jeśli nie chcesz, aby funkcja example
była aktualizowana, nie przekazuj jej do tej funkcji.
Jeśli chcesz, aby funkcja tworzyła nową listę, zapisz funkcję, aby utworzyć nową listę.
http://effbot.org/zone/default-values.htm opisuje inny, ale nieco pokrewny problem. Czytanie, które może pomóc ci zrozumieć, co się dzieje. – MatrixFrog