A criação de closures depende da criação de "nested functions". O objetivo de uma closure é basicamente, o método de vincular dados a uma função sem realmente transmiti-los como parâmetros. Então para isso, devemos primeiro criar nossas funções aninhadas para, então, chamá-las.
def gerador_de_multiplicador(numero):
def nMulti(multiplicador):
return numero * multiplicador
return nMulti
if __name__=="__main__":
multiplicaPor100=gerador_de_multiplicador(100)
# Note that raiseTwo is a factory
print(multiplicaPor100(5))
print(multiplicaPor100(2))
O output é 500 e 200, conforme esperado.