en c/C++, tiene variables en la pila cuando crea una variable local dentro de una función. existenpython crea todo desde el montón?
http://effbot.org/zone/call-by-object.htm
objetos CLU independientemente de activaciones de procedimiento. El espacio para objetos se asigna desde un área de almacenamiento dinámico /.../ En la teoría , todos los objetos continúan existiendo para siempre. En la práctica, el espacio utilizado por un objeto puede recuperarse cuando el objeto no es más accesible para cualquier programa de CLU.
¿Esto significa que los objetos en python se crean a partir de heap (como en malloc en c/C++)? y los objetos se desasignan cuando no hay ningún nombre asociado a ellos (como punteros inteligentes)?
Ejemplo:
def foo(a):
result = []
result.append(a)
return result
foo("hello")
myList = foo("bye")
Así que el primer resultado ([]) fue creado en el montón y consiguió desasignado porque no hay nombre asociado con ella?
También puede eliminar cosas manualmente usando 'del' como en' del result' si cree que es necesario. –
Si su motivación para hacer esto es que desea que su función siempre use la misma lista, tenga en cuenta que puede definirla como 'def foo (a, result = [])', y se usará la misma lista cada vez que llamar a la función, ya que se crea cuando se define la función, no cuando se ejecuta. – geoffspear