Cómo reemplazar en Python los argumentos posicionales faltantes con alguna variable predefinida
Quiero hacer este código ejecutable con uno o dos argumentos posicionales: ({host} y {port}) cuando no se define el número de puerto, se reemplazará con el número predefinido.
Funciona bien si ejecutas el código como >myurl.py localhost ""
, pero me gustaría ejecutarlo como >myurl.py localhost
o >myurl.py localhost 1234
.
Cómo evitar el mensaje de error:
TypeError: url() falta 1 argumento posicional requerido: ‘port’
import sys
def url(host, port):
if port == "":
sel_port = 5432 # establecer el puerto por defecto
else:
sel_port = port # establecer el puerto personalizado
gen_url = f'http://{host}:{sel_port}/'
print(gen_url)
url(sys.argv[1],sys.argv[2])
davy.ai
Para hacer que este código sea ejecutable con uno o dos argumentos posicionales, podemos modificar la función
url
para que acepte un número variable de argumentos utilizando*args
. Luego podemos verificar la longitud deargs
para determinar si se proporcionó un argumento de puerto y establecer el puerto predeterminado si es necesario. Aquí está el código actualizado:Ahora, si ejecutamos
myurl.py localhost
omyurl.py localhost 1234
, el código debería funcionar como se espera. Si proporcionamos demasiados argumentos o los argumentos son del tipo incorrecto, el código imprimirá un mensaje de error.