Argumentos en Python

argumentos en python

Los argumentos en Python se tratan de forma similar al lenguaje C, utilizando un módulo de la biblioteca estándar.

Que son los argumentos de un programa

Antes de comenzar a ver como se tratan los argumentos vamos a comprender que son y sobretodo cual es su utilidad.

Los argumentos de un programa los podemos definir como las opciones que ponemos al ejecutar nuestro programa. A continuación, podemos ver un ejemplo:

python3 programa.py argumento1 argumento2

Los argumentos podemos utilizarlos como opciones de nuestro programa, haciendo que nuestro programa se ejecute de una forma u otra dependiendo los argumentos. Este es el uso convencional de los argumentos, pero podemos utilizarlos según nuestras necesidades.

Como funcionan los argumentos en Python

Podemos acceder a los argumentos de un programa en Python de la siguiente forma:

import sys

print(sys.argv)

Al principio del código hemos importado el módulo sys para utilizar los argumentos en nuestro código. Este módulo tiene más funcionalidades, pero en este caso solo nos interesa argv que, es una lista con los argumentos introducidos dependiendo de la ejecución.

Ahora vamos a ejecutar el código, por ejemplo:

python3 Posts/argumentos.py mapecode

Esa ejecución nos devuelve la siguiente salida:

['Posts/argumentos.py', 'mapecode']

Como podéis observar nos devuelve una lista de dos elementos, pero quizás esperabas solo uno porque en realidad solo hemos puesto un argumento. Esto es algo peculiar y es que el nombre de nuestro programa siempre es el primer argumento. Esta característica también la tiene el lenguaje C al tratar argumentos.

Otra característica importante de la lista de argumentos que obtenemos es que todos los elementos son cadenas. Con lo cual, si tenemos argumentos numéricos y vamos a hacer operaciones con ellos tendremos que convertirlos.

Ejemplo de argumentos numéricos en Python

Cuando conocemos como funcionan los argumentos en Python podemos hacer cualquier cosa con ellos, dependerá de cual sea el objetivo de nuestro programa.

El siguiente código imprime la multiplicación de un número consigo mismo, siendo este número el único argumento que deberá tener nuestro programa al ejecutar.

import sys

try:
    if len(sys.argv) != 2:
        raise Exception("Ejecucion incorrecta, vuelva a intentarlo")
    n = int(sys.argv[1])
except ValueError:
    print("Argumento",sys.argv[1],"no numerico, vuelva intentarlo")
    exit()
except Exception as e:
    print(e)
    exit()
else:
    print(n*n)

Vamos a describir las características de nuestro código paso a paso:

  • Controlamos la longitud de los argumentos, si la lista de argumentos tiene una longitud distinta a 2 (nombre del programa y número) lanzaremos un excepción con un mensaje específico, que será capturada en el segundo except
  • Si pasamos la comprobación anterior intentamos convertir la cadena que representa el número a tipo numérico, en el caso de que no se introduzca un número saltará una excepción ValueError, capturada en el primer except
  • Si todo lo anterior ha salido correctamente se imprimirá la operación.

Deja un comentario