Creo que muchas personas han visto la función de la pitón que recibe los parámetros predeterminados. Por ejemplo:Dónde está el parámetro predeterminado en la función de Python
def foo(a=[]):
a.append(3)
return a
Si llamamos esta función utilizando foo(), la salida anexará número entero '3' cada vez después de la llamada.
Cuando se define esta función, se define un objeto de función llamado 'foo' en el entorno actual, y también se evalúan los valores de parámetros predeterminados en este momento. Cada vez que se llama a la función sin un parámetro, el valor del parámetro evaluado cambiará de acuerdo con el código.
Mi pregunta es ¿Dónde está este parámetro evaluado? ¿Está en el objeto de función o está en el objeto de método al llamar a la función? Dado que todo en python es un objeto, debe haber un lugar para contener el nombre-> enlace de valor de 'a' -> parámetro evaluado. ¿Estoy pensando demasiado en este problema?
Sí, pero ¿dónde está la asignación de 'a' a' [] 'como la OP ha pedido? – MattH
@MattH actualizó la respuesta, gracias. – bereal