Como escrever funções em Python
Shayne Miel
Software Architect @ Duo Security





@double_args def multiply(a, b): return a * bmultiply(1, 5)
20
def multiply(a, b): return a * bdef double_args(func): return funcnew_multiply = double_args(multiply)new_multiply(1, 5)
5
multiply(1, 5)
5
def multiply(a, b): return a * bdef double_args(func):# Defina uma nova função que podemos modificar def wrapper(a, b):# Por enquanto, só chame a função original return func(a, b)# Retorne a nova função return wrappernew_multiply = double_args(multiply)new_multiply(1, 5)
5
def multiply(a, b): return a * bdef double_args(func): def wrapper(a, b):# Chame a função recebida, mas dobre cada argumento return func(a * 2, b * 2)return wrappernew_multiply = double_args(multiply)new_multiply(1, 5)
20
def multiply(a, b): return a * bdef double_args(func): def wrapper(a, b): return func(a * 2, b * 2) return wrappermultiply = double_args(multiply)multiply(1, 5)
20
multiply.__closure__[0].cell_contents
<function multiply at 0x7f0060c9e620>
def double_args(func): def wrapper(a, b): return func(a * 2, b * 2) return wrapperdef multiply(a, b): return a * b multiply = double_args(multiply) multiply(1, 5)
20
def double_args(func): def wrapper(a, b): return func(a * 2, b * 2) return wrapper@double_args def multiply(a, b): return a * b multiply(1, 5)
20
Como escrever funções em Python