python - ¿Cómo acceder a las variables cerradas sobre solo dada la función de cierre?



python-3.x closures (1)

A continuación (el código a continuación devuelve 10)

func.__closure__[0].cell_contents

Esta pregunta ya tiene una respuesta aquí:

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.





closures