"Почему бы это вернуть ['yes']
"
Поскольку вы изменили список, example
.
«хотя я не изменяю непосредственно переменную» пример ».
Но вы являетесь объектом, указанным переменной example
. Функция изменила объект с использованием метода объекта append
.
Как обсуждалось в другом месте на SO, append
не создает ничего нового. Он изменяет объект на месте.
См. Why does list.append evaluate to false?, Python append() vs. + operator on lists, why do these give different results?, Python lists append return value.
и как я могу изменить код так, чтобы функция «example» не выполнялась функцией?
Что вы подразумеваете под этим? Если вы не хотите, чтобы функция example
была обновлена функцией, не передавайте ее функции.
Если вы хотите, чтобы функция создала новый список, напишите функцию для создания нового списка.
http://effbot.org/zone/default-values.htm описывает другую, но несколько связанную с этим проблему. Чтение, которое может помочь вам понять, что происходит. – MatrixFrog