python - ¿Cómo acceder a las variables cerradas sobre solo dada la función de cierre?
python-3.x closures (1)
Esta pregunta ya tiene una respuesta aquí:
- Reflejar / inspeccionar variables cerradas en Python 3 respuestas
En el siguiente ejemplo:
def speak(volume):
def whisper(text):
print(text.lower() + (''.'' * volume))
def yell(text):
print (text.upper() + (''!'' * volume))
if volume > 1:
return yell
elif volume <= 1:
return whisper
func = speak(volume=10)
func(''hello'')
HELLO!!!!!!!!!! # <== obviously `10` is stored in `func` somewhere
Dado el
func
, ¿cómo obtendría el "volumen"?
¿Hay algo dentro del espacio de nombres
func
que dé el valor de
10
?
Pensé que tal vez estaría en
func.__globals__
o
func.__dict__
pero no está en ninguno.
A continuación (el código a continuación devuelve 10)
func.__closure__[0].cell_contents