Usar argumentos de função em Python
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.