python - Come accedere alle variabili chiuse rispetto solo alla funzione di chiusura?



python-3.x closures (1)

Sotto (il codice sotto restituisce 10)

func.__closure__[0].cell_contents

Questa domanda ha già una risposta qui:

Nel seguente esempio:

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

Dato il funzionamento, come func il "volume"? C'è qualcosa nello spazio dei nomi func che dà il valore di 10 ? Ho pensato che forse sarebbe in func.__globals__ o func.__dict__ ma non è in nessuno dei due.





closures