"¿Por qué sería volver ['yes']
"
Debido a que modificó la lista, example
.
"aunque no estoy cambiando directamente la variable 'ejemplo'."
Pero está, proporcionó el objeto denominado por la variable example
a la función. La función modificó el objeto utilizando el método append
del objeto.
Como se discutió en otra parte en SO, append
no crea nada nuevo. Modifica un objeto en su lugar.
Ver Why does list.append evaluate to false?, Python append() vs. + operator on lists, why do these give different results?, Python lists append return value.
y cómo podría modificar el código para que la función no 'afecte' el ejemplo?
¿Qué quieres decir con eso? Si no desea que la función actualice example
, no la pase a la función.
Si desea que la función cree una nueva lista, escriba la función para crear una nueva lista.
http://effbot.org/zone/default-values.htm describe un problema diferente pero algo relacionado. Lectura que puede ayudarlo a entender lo que está pasando. – MatrixFrog