Manejo de la dualidad de módulos en Python: script y módulo
Clase 28 de 44 • Curso de Python: Comprehensions, Funciones y Manejo de Errores
Contenido del curso
- 6

List Comprehension en Python: Sintaxis y Ejemplos Prácticos
08:44 - 7

Comprensión de Diccionarios en Python: Ejemplos y Aplicaciones
11:57 - 8

Dictionary Comprehension con Condicionales en Python
07:34 - 9
Playgrounds: Crea una lista usando List Comprehension
00:00 - 10

Comparación de Listas, Tuplas y Conjuntos en Python
02:44
- 11

Funciones en Programación: Creación y Uso en Python
09:47 - 12

Funciones en Python: Retorno de Valores y Reutilización de Código
10:03 - 13

Funciones en Python: Retorno múltiple y valores por defecto
06:30 - 14

Entendiendo el Scope en Python: Variables y Funciones
07:54 - 15

Refactorización de Juegos en Python: Uso de Funciones
15:10 - 16
Playgrounds: Tienda de Tecnología
00:00 - 17

Funciones Lambda en Python: Sintaxis y Aplicaciones Prácticas
06:39 - 18

Funciones de Orden Superior en Python: Concepto y Ejemplos Prácticos
08:48 - 19

Uso de la función map en Python para transformar listas
08:43 - 20

Transformaciones con Map en Diccionarios Complexos
09:56 - 21

Manejo de referencias en memoria con diccionarios y map en Python
04:13 - 22
Playgrounds: Multiplica todos los elementos por dos
00:00 - 23

Filtrado de listas con Filter en Python
09:19 - 24
Playgrounds: Retorna solo palabras de 4 letras y más
00:00 - 25

Uso de Reduce en Python para Manipular Listas
07:46
- 31

Control manual de iteradores en Python con next
06:33 - 32

Errores y Excepciones en Python: Identificación y Manejo Básico
08:28 - 33

Manejo de Errores en Python: Uso de Try y Except
08:18 - 34
Playgrounds: Captura la excepción: ZeroDivisionError
00:00 - 35

Lectura y manejo de archivos de texto en Python
06:52 - 36

Lectura y escritura de archivos de texto en Python
06:11 - 37

Procesamiento de Archivos CSV en Python para Análisis de Datos
15:49 - 38
Playgrounds: Lee un CSV para calcular el total de gastos
00:00
¿Cómo se pueden ejecutar los módulos en Python?
En el mundo de la programación con Python, la ejecución de módulos puede llevarse a cabo de dos maneras principales: a través de la importación del módulo en otro archivo o ejecutándolo de manera directa como un script. Comprender estas dos formas no solo te brindará flexibilidad, sino que te dotará de la habilidad para evitar errores comunes.
-
Importación desde otro archivo: Una de las formas más comunes y recomendadas de ejecutar un módulo es mediante su importación desde otro archivo Python. Al hacerlo, se pueden utilizar las funciones y variables definidas en el módulo importado sin ejecutar el código de manera automática. Esta técnica facilita la modularidad en los proyectos.
-
Ejecución directa como script: Por otro lado, puedes ejecutar los módulos de manera directa desde la terminal. Esto se hace especificando el archivo al que quieres acceder, tal como se demuestra al teclear
Pythonseguido de la ubicación exacta del archivo en cuestión.
¿Qué problemas pueden surgir al ejecutar un archivo como módulo y como script?
Cuando un módulo está diseñado para funcionar tanto como importación en otro archivo como script ejecutable, podrías enfrentar ciertos problemas. Uno de los principales es que, al importar el módulo, se ejecute automáticamente el código que fue pensado para ejecutarse solo cuando se corre como script. Esto no es un comportamiento deseado ya que puede llevar a la ejecución de código no intencionado.
Ejemplo práctico de ejecución indeseada
Consideremos un archivo llamado main.py que contiene variables y código que pretende ejecutarse solo cuando se llama desde la terminal. Si tienes otro archivo, como example.py, desde el cual importas main simplemente para acceder a sus variables, podrías observar que todo el código en main.py se ejecuta automáticamente, incluyendo aquellas partes que solicitan entrada del usuario.
# Contenido de example.py
import main
print("Esto es desde el archivo example.")
print(main.data)
Al ejecutar example.py, notarás que también tendrás que interactuar con el código de main.py, lo cual no es el comportamiento esperado.
¿Cómo modularizar correctamente para evitar conflictos?
La solución al problema de ejecución inesperada es incrustar el código que deseas ejecutar como script dentro de una función. Luego, puedes controlar cuándo se ejecuta esa función.
# Contenido de main.py
def run():
# Código que solo debe ejecutarse como script
print("Ejecutando como script.")
# ...
if __name__ == "__main__":
run()
Explicación del if __name__ == "__main__"
Este bloque es crucial para controlar la dualidad de la ejecución:
__name__se establece como"__main__"solo si el archivo se ejecuta directamente desde la terminal, por lo que el código dentro delifse ejecutará únicamente en ese contexto.- Si el archivo es importado en otro módulo,
__name__tomará el nombre del módulo y el código dentro delifnunca se ejecutará.
Recomendaciones para el uso dual de módulos
- Incrusta código de ejecución directa en funciones: Asegúrate de encapsular cualquier código que deba ejecutarse como script en funciones dedicadas.
- Utiliza el
if __name__ == "__main__": Así podrás manejar de forma adecuada cuándo y cómo se ejecutan ciertas partes del código. - Prueba ambos escenarios: Siempre verifica el comportamiento tanto al ejecutar directamente como al importar el módulo para evitar sorpresas en producción.
Esta forma de gestionar tus módulos te permitirá conseguir un software más robusto y libre de errores inesperados. Continúa ampliando tus habilidades en Python y descubre nuevas técnicas para mejorar tu código.