Son funciones que se encuentran creadas dentro de otra función
def main():
a=1
def nested():
print(a)
nested()
main()
#resultado
>>1
def main():
a=1
def nested():
print(a)
return nested()
my_func=main()
my_func()
#resultado
>>1
El closure es esta técnica que tienen las funciones para recordar los valores de scopes superiores
def main():
a=1
def nested():
print(a)
return nested()
my_func=main()
my_func()
del(main)
my_func()
#resultado
>> 1
1
cuando tenemos una clase que tiene solo un método cuando trabajamos con decoradores
En clases cortas y cuando trabajamos con decoradores