Atribuindo Funções a Variáveis, Usando como Parâmetros e Retornando de outras Funções - Python
Atribuindo Funções a Variáveis
Em Python, podemos atribuir funções a variáveis e chamá-las através dessas variáveis. Veja o exemplo:
def say_hello():
print("Hello")
def say_goodbye():
print("Good Bye")
message = say_hello
message() # Hello
message = say_goodbye
message() # Good Bye
Neste exemplo, a variável message recebe uma das funções. Inicialmente, ela é atribuída à função say_hello()
message = say_hello
Agora, a variável message está associada à função say_hello
message() # Hello
Ao executar esse comando, o Python chama a função say_hello
message
Também podemos usar uma variável para chamar funções com parâmetros e retornar seus resultados:
def sum(a, b):
return a + b
def multiply(a, b):
return a * b
operation = sum
result = operation(5, 6)
print(result) # 11
operation = multiply
print(operation(5, 6)) # 30
Passando Funções como Parâmetros
Em Python, podemos passar funções como parâmetros para outras funções. Vamos definir uma função que exibe no console o resultado de uma operação qualquer:
def do_operation(a, b, operation):
result = operation(a, b)
print(f"result = {result}")
def sum(a, b):
return a + b
def multiply(a, b):
return a * b
do_operation(5, 4, sum) # result = 9
do_operation(5, 4, multiply) # result = 20
Neste exemplo, a função do_operation
operation
do_operation
Ao chamarmos do_operation
sum
do_operation(5, 4, sum)
Neste caso, o parâmetro operation
sum
Da mesma forma, podemos passar a função multiply
do_operation(5, 4, multiply) # result = 20
Isso torna as funções mais flexíveis, pois permitem que outras funções sejam passadas como parâmetros.
Retornando Funções de Outras Funções
Uma função em Python também pode retornar outra função. Vamos definir uma função que retorna diferentes operações dependendo do valor de um parâmetro:
def sum(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def select_operation(choice):
if choice == 1:
return sum
elif choice == 2:
return subtract
else:
return multiply
operation = select_operation(1) # operation = sum
print(operation(10, 6)) # 16
Dependendo do valor de choice
select_operation
sum
subtract
multiply
select_operation
operation = select_operation(1) # operation = sum
print(operation(10, 6)) # 16
Aqui, o valor 1 foi passado para select_operation
sum
operation
sum
print(operation(10, 6)) # 16 # equivalente a sum(10, 6)
Da mesma forma, podemos retornar e executar outras funções:
operation = select_operation(2) # operation = subtract
print(operation(10, 6)) # 4
operation = select_operation(3) # operation = multiply
print(operation(10, 6)) # 60
Dessa maneira, podemos criar funções flexíveis que retornam outras funções e executar operações de acordo com o contexto.