Argumentos arbitrários

Python intermediário para desenvolvedores

Jasmin Ludolf

Curriculum Manager

Limitações de argumentos definidos

def average(values):
    """Find the mean in a sequence of values and round to two decimal places."""

    average_value = sum(values) / len(values)
    rounded_average = round(average_value, 2)
    return rounded_average

# Usando seis argumentos print(average(15, 29, 4, 13, 11, 8))
TypeError: average() takes 1 positional argument but 6 were given
Python intermediário para desenvolvedores

Argumentos posicionais arbitrários

  • Docstrings ajudam a explicar como usar funções

  • Argumentos arbitrários permitem aceitar qualquer número de argumentos

# Permitir qualquer número de argumentos posicionais (sem nome)
def average(*args):
    # O código da função permanece o mesmo
  • Nome convencional: *args

  • Permite usos variados com resultados previsíveis!

Python intermediário para desenvolvedores

Usando argumentos posicionais arbitrários

# Chamando average com seis argumentos posicionais
print(average(15, 29, 4, 13, 11, 8))
13.33
Python intermediário para desenvolvedores

Args formam um único iterável

  • *: Converte argumentos em um único iterável (tupla)
# Calculando em múltiplas listas
print(average(*[15, 29], *[4, 13], *[11, 8]))
13.33
Python intermediário para desenvolvedores

Argumentos nomeados arbitrários

# Usar argumentos nomeados arbitrários
def average(**kwargs):

average_value = sum(kwargs.values()) / len(kwargs.values()) rounded_average = round(average_value, 2) return rounded_average
  • Argumentos nomeados arbitrários: **kwargs

  • keyword=value

Python intermediário para desenvolvedores

Usando argumentos nomeados arbitrários

# Chamando average com seis kwargs
print(average(a=15, b=29, c=4, d=13, e=11, f=8))
13.33
# Chamando average com um kwarg
print(average(**{"a":15, "b":29, "c":4, "d":13, "e":11, "f":8}))
13.33
  • Cada par chave-valor do dicionário vira um argumento nomeado e seu valor!
Python intermediário para desenvolvedores

Kwargs formam um único iterável

# Chamando average com três grupos de kwargs
print(average(**{"a":15, "b":29}, **{"c":4, "d":13}, **{"e":11, "f":8}))
13.33
Python intermediário para desenvolvedores

Vamos praticar!

Python intermediário para desenvolvedores

Preparing Video For Download...