Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Aula 8 - Exercício 3: Crie uma closure para multiplicar números por um número fixo.

2 Respostas

0 votos
respondida Out 6 por Fernando Fellows (11 pontos)  

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.

0 votos
respondida 5 dias atrás por daniel cunha (16 pontos)  

Oi Fernando,

A resposta esta' direta e consisa, o que e' bom. Acho que tem uma pequena typo no "if name...". Como contribuicao, deixo aqui uma expansao de closure com 3 funcoes.

enter code here
 def f(x):
 def g(y):
    def h(z):
        return x * y * z
    return h
return g

if __name__ == '__main__': 

    x = 3
    y = 1
    z = 4
    print(f(x)(y)(z))
...