Functions as Arguments
Lição 3 de 12 do curso Decoradores em Python da Coddy.
Em Python, podemos passar uma função como argumento para outra função.
Por exemplo,
def add_numbers(a, b):
return a + b
def multiply_numbers(a, b):
return a * b
def calculate(func, a, b):
return func(a, b)
result = calculate(add_numbers, 2, 3)
print(result) # Saída: 5
result = calculate(multiply_numbers, 2, 3)
print(result) # Saída: 6
Neste exemplo, definimos duas funções: add_numbers e multiply_numbers.
Em seguida, definimos uma terceira função chamada calculate, que recebe uma função func como seu primeiro argumento, junto com dois argumentos adicionais a e b.
Quando chamamos calculate, passamos o nome da função que queremos usar (seja add_numbers ou multiply_numbers) como o argumento func, junto com os dois números nos quais queremos operar.
A função calculate então chama a função func com os dois números e retorna o resultado.
No exemplo acima, chamamos calculate duas vezes: uma vez com add_numbers e outra com multiply_numbers.
A primeira chamada retorna a soma de 2 e 3 (que é 5), e a segunda chamada retorna o produto de 2 e 3 (que é 6).
Desafio
FácilEscreva uma função chamada list_operator que recebe uma lista de inteiros e uma função operadora como argumentos.
A função operator deve receber dois inteiros como entrada e retornar um único inteiro como saída.
A função list_operator deve aplicar a função operadora a todos os pares de inteiros adjacentes na lista e retornar uma nova lista com os resultados.
Aqui está um exemplo de como a função deve funcionar:
>>> numbers = [1, 2, 3, 4, 5]
>>> result = list_operator(numbers, operator.add)
>>> result
[3, 5, 7, 9]
>>> numbers = [10, 20, 30, 40]
>>> result = list_operator(numbers, operator.mul)
>>> result
[200, 600, 1200]Restrições
- A lista de entrada sempre conterá pelo menos dois inteiros.
- A função operadora sempre receberá dois inteiros como entrada e retornará um único inteiro como saída.
Nota! A função operadora é fornecida por nós, você não precisa criá-la, apenas utilizá-la.
Experimente você mesmo
Todas as lições de Decoradores em Python
Pratique por conta própria: Compilador de Python online