Python Módulo 1 – Primeros pasos: instalar, ejecutar y leer Python
El REPL de Python, los scripts y la opción -m
Explora valores en el intérprete interactivo de Python, ejecuta scripts, órdenes de una línea y módulos con python3, -c y -m, y lee argumentos con sys.argv.
Qué vas a aprender
- Usar el intérprete interactivo para explorar valores con help() y dir()
- Predecir lo que imprime un script, comparado con las mismas líneas escritas en el intérprete
- Ejecutar un script, un módulo con -m y una orden de una línea con -c
- Leer los argumentos de la línea de órdenes con sys.argv
Antes de empezar
Qué vas a aprender · Antes de empezar
Qué vas a aprender
- Usar el intérprete interactivo para explorar valores con help() y dir()
- Predecir lo que imprime un script, comparado con las mismas líneas escritas en el intérprete
- Ejecutar un script, un módulo con -m y una orden de una línea con -c
- Leer los argumentos de la línea de órdenes con sys.argv
Antes de empezar
En esta página
Escribe 2 ** 100 en el indicador >>> de Python y responde al momento con los 31 dígitos; guarda la misma línea en un archivo, ejecuta el archivo y no aparece nada. Las dos veces es el mismo Python, ejecutado de dos formas distintas.
Hay tres formas de darle código a Python: escribirlo en el intérprete interactivo, guardarlo en un archivo y ejecutar el archivo, o pasarlo en la línea de órdenes. Cada una tiene su sitio, y saber en cuál estás explica muchas sorpresas del tipo “aquí funcionaba y allí no”.
El intérprete lee una línea, la ejecuta e imprime su valor
Ejecuta python3 (en Windows, py) sin nada detrás. Python imprime un pequeño encabezado y el indicador >>>: estás en el intérprete interactivo, también llamado El intérprete interactivo que inicia python3 cuando no le das ningún archivo: lee una línea en el indicador >>>, la evalúa, imprime el valor y espera a la siguiente línea., de leer, evaluar, imprimir y repetir (read, evaluate, print, loop). Escribe una expresión y pulsa Enter; Python la evalúa e imprime su valor:
>>> 2 ** 100
1267650600228229401496703205376
>>> _ * 2
2535301200456458802993406410752
>>> name = "Asha"
>>> name.upper()
'ASHA'
>>> "upper" in dir(name)
True Esta sesión se reprodujo con Python 3.14.8 en macOS 26 arm64 e imprimió exactamente lo que se muestra.
Las líneas que empiezan por >>> son lo que se escribió; las demás, lo que imprimió Python. Recorre la misma sesión, línea a línea, por el bucle que da nombre al intérprete:
El dibujo muestra la escena completa; sus 8 pasos aparecen abajo.
Todos los pasos en texto
- Leer 2 ** 100. Escribes 2 ** 100 y pulsas Enter. El intérprete lee la línea entera antes de hacer nada con ella.
- Evaluarla. Python calcula el valor: 2 elevado a 100, un número entero de 31 dígitos. Los números enteros de Python no tienen límite de tamaño, así que no se redondea nada.
- Imprimirlo y guardarlo en _. Una expresión tiene un valor, así que el intérprete lo imprime, con todos sus dígitos, y lo guarda en _ para la siguiente línea.
- Otra vuelta. De vuelta en el indicador, _ * 2 lee el último valor de _ y lo duplica, y el intérprete imprime el nuevo número de 31 dígitos.
- Una asignación no muestra nada. name = "Asha" es una sentencia, no una expresión: crea el nombre y no tiene ningún valor que mostrar, así que el siguiente indicador aparece enseguida.
- El texto aparece entre comillas. name.upper() da la cadena ASHA. El intérprete la muestra como la escribirías, 'ASHA', entre comillas, para que distingas el texto de un número.
- Preguntar por el objeto. dir(name) enumera los nombres que tiene una cadena, entre ellos sus métodos, e in pregunta si upper es uno de ellos. El intérprete muestra True.
- Salir del bucle. El bucle sigue hasta que lo dejas con exit, o con Ctrl-D en macOS y Linux (Ctrl-Z y después Enter en Windows). Todos los nombres que creaste se van con él.
Cuatro cosas en las que fijarte:
**eleva un número a una potencia, así que2 ** 100es . Los números enteros de Python no tienen límite de tamaño, así que el intérprete imprime los 31 dígitos en lugar de redondear el resultado.- El intérprete imprime por sí solo el valor de una expresión. Un script no: ahí necesitas
print(). _(un guion bajo) contiene el último valor que imprimió el intérprete, lo que te ahorra volver a escribirlo. Solo funciona en el intérprete.dir(name)enumera los nombres que tiene un objeto, sus métodos y atributos;help(name.upper)muestra la documentación de uno de ellos. En una página de ayuda, pulsaqpara volver al indicador.
El intérprete muestra cada valor como lo escribirías en el código, así que el texto va entre comillas, 'ASHA', y el texto '5' nunca parece el número 5. Una asignación como name = "Asha" no tiene ningún valor que mostrar, así que el siguiente indicador vuelve enseguida.
Para salir del intérprete, escribe exit (en el intérprete básico antiguo, exit()), o pulsa Ctrl-D en macOS y Linux, o Ctrl-Z y después Enter en Windows.
Nota de versión
Desde Python 3.13, el intérprete te deja editar un bloque entero de varias líneas y guarda tu historial. Python 3.14 añade colores de sintaxis y completa los nombres de módulos después de import cuando pulsas Tab. Si tu terminal tiene problemas con el intérprete nuevo, define la variable de entorno PYTHON_BASIC_REPL como 1 para tener el más sencillo.
El intérprete sirve para probar cosas. Todo lo que quieras conservar va en un archivo.
Punto de control
Comprueba: el intérprete interactivo y lo que imprime
Un script se ejecuta de arriba abajo y solo imprime lo que tú imprimes
Un script es un archivo de código Python. python3 hello.py ejecuta el archivo hello.py de la carpeta actual, de la primera línea a la última, y termina. Añade -i (python3 -i hello.py) para quedarte en el intérprete interactivo cuando el script haya terminado, con todas sus variables todavía ahí para examinarlas.
La costumbre del intérprete de mostrar cada valor se queda en el intérprete. Aquí están las primeras líneas de la sesión guardadas como un archivo. Recórrelo y mira qué llega a la salida:
Programa · bare_values.py
2 ** 100
print(2 ** 100)
name = "Asha"
name.upper()
print(name.upper()) Variables
- cambiado en este paso
Impreso hasta ahora
Todavía no hay nada impreso1267650600228229401496703205376 ASHA
Cada paso se registró de una ejecución con Python 3.14.8 en macOS 26 arm64.
El dibujo muestra las variables cuando termina el programa, y los 6 pasos del programa aparecen abajo.
Cambia el programa y ejecútalo aquí. Se ejecuta en este dispositivo, en tu navegador. La primera ejecución descarga Python (unos 13.5 MB), que se guarda para las siguientes.
Tu ejecución, en este navegador
Todos los pasos en texto
- Inicio. Todavía no se ha ejecutado ninguna línea, así que no hay variables. Python empieza por la línea 1.
- Línea 1. Se ejecuta
2 ** 100. Lo clave En el intérprete este valor aparecería enseguida. Un script lo calcula y lo descarta, porque nada pidió imprimirlo. - Línea 2.
print(2 ** 100)imprime1267650600228229401496703205376. - Línea 3.
name = "Asha"asigna'Asha'aname. - Línea 4.
name.upper()dejanamecomo estaba.name.upper()da una cadena nueva,'ASHA', y el script también la descarta.nameno cambia. - Línea 5.
print(name.upper())imprimeASHA. Era la última línea, así que el programa termina. Cinco líneas de código, dos líneas de salida: en un script, soloprint()escribe algo.
Se ejecutaron cinco líneas y salieron dos: las líneas 1 y 4 calcularon sus valores y los descartaron, y print() escribió ASHA sin las comillas que muestra el intérprete. Pulsa Editar, envuelve la línea 4 en print() y vuelve a ejecutarlo: ahora imprime ASHA dos veces. Además, un script empieza sin ningún nombre, cada vez: una variable que creaste en el intérprete, o en la ejecución anterior, no existe en la siguiente.
Idea clave
El intérprete muestra el valor de cada expresión que escribes; un script solo muestra lo que escribe print(), y cada ejecución empieza sin ningún nombre.
Punto de control
Comprueba: lo que imprime un script y lo que conserva
Una orden de una línea o un módulo pueden ejecutarse sin un script tuyo
Para un cálculo rápido, pasa el propio código con -c: python3 -c "print(2 ** 100)". Pon el código entre comillas para que el terminal se lo dé a Python en una sola pieza.
Nota de versión
Novedad de Python 3.14: primero se quita la sangría común al código que va después de -c, así que funciona un bloque con sangría pegado desde un archivo. Python 3.12 rechaza el mismo texto con IndentationError: unexpected indent.
python3 -m name encuentra el módulo llamado name, como lo haría import name, y lo ejecuta como un programa. Muchos módulos de la biblioteca estándar son útiles así:
python3 -m venv .venvcrea un entorno virtual (una lección posterior).python3 -m pip install …instala paquetes con pip.python3 -m json data.jsoncomprueba un archivo JSON y lo imprime con una sangría ordenada (nuevo en 3.14;python3 -m json.tooltambién funciona).python3 -m http.serversirve los archivos de la carpeta actual enhttp://localhost:8000/hasta que pulsas Ctrl-C. Otros dispositivos de tu red también pueden acceder, así que ejecútalo solo en una carpeta que no te importe compartir. Añadir--bind 127.0.0.1lo limita a tu propia computadora.
Así que python3 se puede iniciar de cuatro formas, y el primer elemento de sys.argv, la lista de palabras de la línea de órdenes de la que trata la siguiente sección, le dice al programa cuál fue:
| Escribes | Python ejecuta | sys.argv[0] es |
|---|---|---|
python3 |
el intérprete interactivo | '', una cadena vacía |
python3 hello.py |
el archivo, de arriba abajo | 'hello.py', tal como se escribió |
python3 -c "code" |
el código entre las comillas | '-c' |
python3 -m name |
el módulo name |
la ruta completa del archivo del módulo |
El módulo viene del mismo intérprete que el python3 que escribiste. Por eso python3 -m pip es la forma segura de instalar paquetes: los instala para ese Python, aunque una orden pip de tu PATH pertenezca a otro. Recorre ese caso en una computadora con dos Python:
El dibujo muestra la escena completa; sus 5 pasos aparecen abajo.
Todos los pasos en texto
- Dos Python en una computadora. Esta computadora tiene Python 3.12 y Python 3.14. python3 ejecuta 3.14, pero la orden pip que PATH encuentra primero se instaló con 3.12.
- pip install rich. pip instala en el Python al que pertenece, 3.12, e informa de que todo salió bien. La instalación no tiene ningún problema; fue al otro Python.
- El script no lo encuentra. python3 app.py ejecuta 3.14, cuyos paquetes no incluyen rich, así que import rich falla con ModuleNotFoundError.
- python3 -m pip. -m pip ejecuta el módulo pip del Python que escribiste. Por eso python3 -m pip install rich instala en 3.14, el Python que ejecuta tu script.
- Ahora la importación funciona. El mismo python3 app.py ya encuentra rich. Escribir python3 -m pip ata cada instalación al intérprete que va a ejecutar tu código.
La primera instalación fue a Python 3.12 porque el pip que el terminal encontró primero era suyo; nombrar el intérprete, python3 -m pip, envió la segunda adonde busca app.py.
Punto de control
Comprueba: ejecutar código con -c y módulos con -m
sys.argv contiene los argumentos, todos como cadenas
Las palabras que escribes después del nombre del script llegan al programa en sys.argv, una lista de cadenas. El elemento 0 es el nombre del script tal como lo escribiste; después van los argumentos:
import sys
# A terminal fills sys.argv from the command line: python3 args_demo.py Asha 3
# A browser has no command line, so when no arguments were given we set the same list here.
if len(sys.argv) <= 1:
sys.argv = ["args_demo.py", "Asha", "3"]
print("Script name:", sys.argv[0])
print("Arguments:", sys.argv[1:])
print("Number of arguments:", len(sys.argv) - 1) Salida
Script name: args_demo.py Arguments: ['Asha', '3'] Number of arguments: 2
Salida registrada con Python 3.14.8 en macOS 26 arm64. Para ejecutarlo tú: mise exec python@3.14.8 -- python3 args_demo.py
Se ejecuta en este dispositivo, en tu navegador. La primera ejecución descarga Python (unos 13.5 MB), que se guarda para las siguientes.
Tu ejecución, en este navegador
Ejecútalo como python3 args_demo.py Ravi 5 extra y en su lugar imprime esos tres argumentos. Un navegador no tiene línea de órdenes, así que cuando el programa no recibe argumentos, como en un ejecutor del navegador, pone él mismo la lista, como la habría puesto un terminal. Recorre lo que hace un terminal con esa línea:
El dibujo muestra la escena completa; sus 5 pasos aparecen abajo.
Todos los pasos en texto
- El terminal divide la línea. Escribes python3 args_demo.py Ravi 5 extra. El terminal divide la línea por los espacios; python3 es el programa que inicia, y el resto de las palabras se le pasan a él.
- El elemento 0 es el script. Python ejecuta args_demo.py y pone el nombre del script, tal como lo escribiste, en sys.argv[0].
- Siguen los argumentos. Cada palabra después del script pasa a ser el siguiente elemento de la lista, por orden: de sys.argv[1] a sys.argv[3].
- Cada elemento es una cadena. sys.argv[2] es el texto 5, no el número. int(sys.argv[2]) lo convierte en el número 5 antes de cualquier cálculo.
- Contar los argumentos. La lista tiene cuatro elementos, así que el programa recibió len(sys.argv) - 1 = 3 argumentos, que es lo que imprime la ejecución registrada de abajo.
Cada palabra se convirtió en un Una palabra escrita después del nombre de un programa, como Ravi en python3 greet.py Ravi. Python le pasa los argumentos al programa como cadenas, en la lista sys.argv., por orden, como texto. Aquí está el mismo programa, ejecutado exactamente con esas tres palabras después de su nombre:
import sys
# A terminal fills sys.argv from the command line: python3 args_demo.py Asha 3
# A browser has no command line, so when no arguments were given we set the same list here.
if len(sys.argv) <= 1:
sys.argv = ["args_demo.py", "Asha", "3"]
print("Script name:", sys.argv[0])
print("Arguments:", sys.argv[1:])
print("Number of arguments:", len(sys.argv) - 1) Salida
Script name: args_demo.py Arguments: ['Ravi', '5', 'extra'] Number of arguments: 3
Salida registrada con Python 3.14.8 en macOS 26 arm64. Para ejecutarlo tú: mise exec python@3.14.8 -- python3 args_demo.py Ravi 5 extra
Atención
Todos los argumentos son cadenas, incluso 3. Conviértelo antes de hacer cálculos: int(sys.argv[2]). Para programas con opciones y texto de ayuda, el módulo argparse (que este curso trata más adelante) hace el análisis por ti.
Punto de control
Comprueba: los argumentos de la línea de órdenes en sys.argv
Practica: leer un nombre y un número
Escribe parse_args(argv), que lee un nombre y un número opcional de una lista como sys.argv y se detiene con un mensaje de uso cuando la línea de órdenes está mal. Sus pruebas de ejemplo prueban un nombre que falta, un número que no es un número y argumentos que sobran:
Ejercicio · Fácil · Python
Leer un nombre y un número de la línea de órdenes
Un programa lee sus argumentos de sys.argv; una función que recibe esa lista como parámetro es más fácil de probar. Escribe parse_args(argv) para un programa que se usa como greet.py NAME [COUNT], donde los corchetes indican que el número se puede omitir.
argves una lista comosys.argv: primero el nombre del programa y después los argumentos, todos ellos cadenas.- Devuelve una tupla
(name, count)concountcomo número entero:parse_args(["greet.py", "Asha", "3"])devuelve("Asha", 3). - Cuando se omite el número, es 1:
parse_args(["greet.py", "Ravi"])devuelve("Ravi", 1). - Cuando falta el nombre, sobran argumentos o el número no es un entero de al menos 1, lanza
SystemExitcon el mensajeusage: greet.py NAME [COUNT].
raise SystemExit("usage: greet.py NAME [COUNT]") detiene un programa con ese mensaje, como lo hace sys.exit() con un mensaje.
Código inicial · greet.py
def parse_args(argv):
"""Return (name, count) from a list like sys.argv, or stop with the usage message."""
name = argv[1]
count = argv[2]
return name, count Las pruebas de ejemplo · test_greet.py
from greet import parse_args
USAGE = "usage: greet.py NAME [COUNT]"
def exits_with_usage(argv):
"""True when parse_args(argv) stops the program with the usage message."""
try:
parse_args(argv)
except SystemExit as stop:
return str(stop.code) == USAGE
return False
def test_name_and_count():
"""reads the name and the count as a number"""
assert parse_args(["greet.py", "Asha", "3"]) == ("Asha", 3)
assert parse_args(["greet.py", "Mei", "1"]) == ("Mei", 1)
def test_count_defaults_to_one():
"""uses 1 when the count is left out"""
assert parse_args(["greet.py", "Ravi"]) == ("Ravi", 1)
def test_missing_name():
"""stops with the usage message when the name is missing"""
assert exits_with_usage(["greet.py"])
def test_bad_count():
"""stops with the usage message for a count that is not a whole number of at least 1"""
assert exits_with_usage(["greet.py", "Asha", "three"])
assert exits_with_usage(["greet.py", "Asha", "0"])
assert exits_with_usage(["greet.py", "Asha", "-2"])
def test_too_many_arguments():
"""stops with the usage message when there are extra arguments"""
assert exits_with_usage(["greet.py", "Asha", "3", "extra"]) Una pista
Comprueba cuántos elementos tiene argv antes de leerlos: len(argv) es 2 solo con un nombre y 3 con un nombre y un número. "3".isdigit() es True y "three".isdigit() es False, así que comprueba el texto antes de llamar a int() con él.
Resultados de las pruebas de ejemplo
| Prueba | Resultado | Detalles |
|---|
Lo que imprimió tu código
Las pruebas de ejemplo se ejecutan en este dispositivo, en tu navegador (Pyodide): no se envía nada a mysmartcopilot.com. La primera ejecución descarga Python (unos 13.5 MB), que se guarda para las siguientes. Una comprobación en tu navegador es una orientación para ti, no la prueba de que el código sea correcto con cualquier entrada.
Después responde las preguntas sobre el intérprete, los scripts, -c, -m y sys.argv. Lo que menos dominas se pregunta primero, y cada opción viene con el motivo de que sea correcta o no:
Práctica que se adapta a ti
Practica esta lección
13 preguntas sobre 4 ideas de esta lección. Cada respuesta se explica al momento, y lo que aciertas se guarda en este navegador.
Preguntas de entrevista
Calentamiento (júnior): ¿qué diferencia hay entre ejecutar código en el REPL y ejecutarlo como script?
El REPL, el intérprete interactivo que inicia python3 sin archivo, lee una línea cada vez en el indicador >>>, la ejecuta e imprime el valor de cada expresión como lo escribirías, así que el texto aparece entre comillas. Conserva todos los nombres que creas, y el último valor en _, hasta que sales. Un script es un archivo que python3 file.py ejecuta de arriba abajo de una vez: solo imprime lo que escribe print(), y cada ejecución empieza de nuevo sin ningún nombre. Usa el REPL para probar una idea y para mirar valores con dir() y help(); pon en un script todo lo que quieras conservar o volver a ejecutar. python3 -i file.py ejecuta un script y después abre el REPL con sus variables todavía ahí.
Dos preguntas más difíciles parten de esta lección: un script cuya línea de órdenes falla en una tarea programada, y un python3 -m http.server iniciado en la carpeta equivocada. Decide tu primer paso antes de abrir cada una:
Las respuestas modelo se abren con cualquier pase: 79 ₹ por 1 semana (2,99 US$), un solo pago que nunca se renueva.
-
De júnior a nivel medio
python3 top.py marks.csv 5 imprime las cinco mejores notas, y funciona cuando lo ejecutas tú. Una tarea programada que omitió el número falla con IndexError, y una ejecución con el cinco escrito con letras falla con ValueError a mitad de su salida. ¿Cómo leerías los argumentos para que cualquier llamada mal hecha falle pronto y con claridad?
-
De júnior a nivel medio
Para pasarle un PDF a un compañero por el Wi-Fi de la universidad, un estudiante ejecuta python3 -m http.server en su carpeta personal. ¿A qué pueden acceder ahora los demás en esa red, y cómo compartirías el archivo, si http.server sigue siendo la herramienta?
Para recordar
python3solo inicia el intérprete interactivo, que imprime cada valor; sal de él conexito Ctrl-D (Ctrl-Z e Enter en Windows).python3 file.pyejecuta un script,-ideja abierto el intérprete después, y-c "code"ejecuta una orden de una línea.- Un script solo imprime lo que escribe
print(), y cada ejecución empieza sin nombres propios. python3 -m moduleejecuta un módulo con el mismo intérprete, y por esopython3 -m pipinstala en el Python correcto.sys.argvcontiene el nombre del script y los argumentos, todos como cadenas.
Tarjetas · 3 tarjetas
Repaso rápido
Di la respuesta para ti antes de mirarla: recordarla es lo que hace que se quede.
-
¿Qué contiene _ en el intérprete interactivo?
El último valor que imprimió el intérprete. Solo existe en el intérprete, no en los scripts.
-
¿Por qué python3 -m pip es más seguro que una orden pip sola?
Ejecuta pip exactamente para ese intérprete, así que los paquetes se instalan para el Python que querías, aunque otro pip vaya primero en tu PATH.
-
¿De qué tipo son los elementos de sys.argv?
Cadenas. sys.argv[0] es el nombre del script; convierte un argumento con int() antes de hacer cálculos con él.
Referencias
- El tutorial de Python: cómo usar el intérprete de Python (en inglés) (Python Software Foundation)
- Línea de órdenes y entorno (en inglés) (Python Software Foundation)
- sys.argv (biblioteca estándar de Python, en inglés) (Python Software Foundation)
- sys.displayhook (biblioteca estándar de Python, en inglés) (Python Software Foundation)
- http.server: servidores HTTP (interfaz de línea de órdenes, en inglés) (Python Software Foundation)
- Novedades de Python 3.14 (en inglés) (Python Software Foundation)
- Novedades de Python 3.13 (en inglés) (Python Software Foundation)
Herramientas relacionadas
Informar de un problema con esta lección (en inglés)
Solo se guarda en este navegador. Tu progreso en Learn (en inglés)