Usar argumentos de palavra-chave em Python
Os argumentos opcionais exigem um valor padrão atribuído a eles. Esses argumentos nomeados são chamados de argumentos de palavra-chave. Os valores de argumento de palavra-chave devem ser definidos nas próprias funções. Quando você está chamando uma função definida com argumentos de palavra-chave, não é necessário usá-los.
A missão Apollo 11 levou cerca de 51 horas para chegar à Lua. Vamos criar uma função que retorna o tempo estimado de chegada usando o mesmo valor da missão Apollo 11 como padrão:
from datetime import timedelta, datetime
def arrival_time(hours=51):
now = datetime.now()
arrival = now + timedelta(hours=hours)
return arrival.strftime("Arrival: %A %H:%M")
A função usa o datetime
módulo para definir a hora atual. Ele usa timedelta
para permitir a operação de adição que resulta em um novo objeto de tempo. Depois de calcular esse resultado, ele retorna a estimativa formatada arrival
como uma cadeia de caracteres. Tente chamá-lo sem argumentos:
arrival_time()
Arrival: Saturday 16:42
Embora a função defina um argumento de palavra-chave, ela permite não passar um quando você está chamando uma função. Nesse caso, o padrão da hours
variável é 51
. Para verificar se a data atual está correta, use 0
como o valor para hours
:
arrival_time(hours=0)
Arrival: Thursday 13:42
Misturando argumentos e argumentos de palavras-chave
Às vezes, uma função precisa de uma combinação de argumentos e argumentos de palavra-chave. Em Python, essa combinação segue uma ordem específica. Os argumentos são sempre declarados primeiro, seguidos por argumentos de palavra-chave.
Atualize a arrival_time()
função para usar um argumento obrigatório, que é o nome do destino:
from datetime import timedelta, datetime
def arrival_time(destination, hours=51):
now = datetime.now()
arrival = now + timedelta(hours=hours)
return arrival.strftime(f"{destination} Arrival: %A %H:%M")
Como você adicionou um argumento necessário, não é mais possível chamar a função sem nenhum argumento:
arrival_time()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: arrival_time() missing 1 required positional argument: 'destination'
Use "Moon"
como o valor para destination
para evitar o erro:
arrival_time("Moon")
Moon Arrival: Saturday 16:54
Você também pode passar mais de dois valores, mas precisa separá-los com uma vírgula. Leva cerca de 8 minutos (0,13 horas) para chegar à órbita, então use isso como argumento:
arrival_time("Orbit", hours=0.13)
Orbit Arrival: Thursday 14:11