Menu
Coddy logo textTech

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).

challenge icon

Desafio

Fácil

Escreva 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