Usar argumentos de função em Python

Concluído

Agora que você sabe como criar uma função sem entradas, o próximo passo é criar funções que exigem um argumento. O uso de argumentos torna as funções mais flexíveis, porque eles podem fazer mais e condicionalizar o que fazem.

Exigir um argumento

Se você estiver pilotando um foguete, uma função sem entradas necessárias é como um computador com um botão para dizer a hora. Se você pressionar o botão, uma voz computadorizada informa a hora. Mas uma entrada necessária pode ser um destino para calcular a distância da viagem. As entradas necessárias são chamadas de argumentos para a função.

Para requerer um argumento, coloque-o entre parênteses:

def distance_from_earth(destination):
    if destination == "Moon":
        return "238,855"
    else:
        return "Unable to compute to that destination"

Tente chamar a distance_from_earth() função sem argumentos:

distance_from_earth()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: distance_from_earth() missing 1 required positional argument: 'destination'

Python gera TypeError com uma mensagem de erro que diz que a função requer um argumento chamado destination. Se o computador do foguete for solicitado a calcular a distância de viagem com um destino, ele deve avisar que um destino é um requisito. O código de exemplo tem dois caminhos para uma resposta, um para a Lua e outro para qualquer outra coisa. Use a Lua como entrada para obter uma resposta:

distance_from_earth("Moon")
238,855

Como há uma condição catch-all , tente usar qualquer outra cadeia de caracteres como destino para verificar esse comportamento:

distance_from_earth("Saturn")
Unable to compute to that destination

Vários argumentos necessários

Para usar vários argumentos, você deve separá-los usando uma vírgula. Vamos criar uma função que possa calcular quantos dias leva para chegar a um destino, dada a distância e uma velocidade constante:

def days_to_complete(distance, speed):
    hours = distance/speed
    return hours/24

Agora use a distância da Terra à Lua para calcular quantos dias seriam necessários para chegar à Lua a um limite de velocidade de 75 milhas por hora:

days_to_complete(238855, 75)
132.69722222222222

Funciona como argumentos

Você pode usar o valor da days_to_complete() função e atribuí-lo a uma variável e, em seguida, passá-lo para round() (uma função interna que arredonda para o número inteiro mais próximo) para obter um número inteiro:

total_days = days_to_complete(238855, 75)
round(total_days)
133

No entanto, um padrão útil é passar funções para outras funções em vez de atribuir o valor retornado:

round(days_to_complete(238855, 75))
133

Gorjeta

Embora a passagem de funções diretamente para outras funções como entrada seja útil, há potencial para reduzir a legibilidade. Este padrão é especialmente problemático quando as funções requerem muitos argumentos.