Introducción al
funcionamiento
Python
Python es un
lenguaje de
programación !
Un lenguaje de programación es un
lenguaje formal que, mediante una
serie de instrucciones, permite al
programador escribir un conjunto de
órdenes, acciones consecutivas, datos
y algoritmos para crear programas
que controlen el comportamiento
físico y lógico de una máquina.
¿Cómo Funciona
Python?
Python es un lenguaje interpretado, lo
que significa que el código no se
traduce directamente a código de
máquina como en los lenguajes
compilados, sino que pasa por un
proceso de interpretación que
convierte el codigo en un formato
intermedio (bytecode) que la máquina
puede ejecutar.
Lenguajes Compilados
(Ejemplo: C++)
Los lenguajes compilados, como C++,
convierten el código fuente a código de
máquina directamente mediante un
proceso de compilación. Este tipo de
lenguajes suelen ser más rápidos en
tiempo de ejecución.
código de
c++ Compilador
máquina
Lenguajes Interpretados
(Ejemplo: Python)
En Python, el código pasa por una
máquina virtual que convierte el código
a un formato intermedio (bytecode), y
luego lo ejecuta. Esto hace que Python
sea multiplataforma y fácil de usar en
diferentes sistemas operativos.
máquina ejecución
c++ bytecode
virtual
Preguntas Frecuentes
¿Qué es la carpeta pycache?
La carpeta pycache contiene el
bytecode de los archivos Python, lo
que optimiza la ejecución del código
al evitar la recompilación innecesaria
en ejecuciones futuras.
¿Qué es un objeto?
Un objeto es un concepto, abstracción
o cosa con límites bien definidos que
tiene un significado dentro del
problema que se está manejando.
¿Son los lenguajes interpretados más
lentos?
En general, sí, pero la versatilidad y
facilidad de uso de Python lo hacen
ideal para muchas aplicaciones como
análisis de datos, machine learning y
desarrollo web. En muchos casos, la
diferencia en velocidad no es un factor
limitante.
¿Qué es el Garbage Collector en
Python?
Python incluye un recolector de
basura que se encarga de liberar
memoria automáticamente
eliminando objetos no utilizados. Esto
mejora la eficiencia y previene
problemas de memoria.
Organización de los
Archivos de tu Proyecto
Es esencial tener una buena
organización en los proyectos Python,
especialmente cuando crecen en
tamaño y complejidad. Python organiza
su código en módulos y paquetes.
Módulos
Un módulo es cualquier archivo de
Python .py que contiene código
reutilizable. Ejemplos comunes incluyen
math, random, y os.
Paquetes
Un paquete es una carpeta que contiene
módulos y debe incluir un archivo
especial llamado init.py. Este archivo
indica que la carpeta es un paquete de
Python.
Ejemplo de estructura
Tipado en Python
Python es un lenguaje dinámico, pero
puedes utilizar anotaciones de tipado
para mejorar la claridad de tu código.
Tipado Estático vs Dinámico
En lenguajes estáticos como C++ o
Java, debes especificar el tipo de cada
variable.
En Python, puedes declarar variables
sin un tipo específico, y el tipo se
asignará dinámicamente durante la
ejecución.
Tipado Estático en Python
Aunque Python es dinámico, desde la
versión 3.5, puedes usar anotaciones
de tipado para hacer el código más
legible y fácil de depurar.
Funciones con Tipado Estático
Puedes añadir anotaciones de tipado
a las funciones para definir qué tipo
de datos aceptan y devuelven.
Listas y Diccionarios con Tipado
Estático
El módulo typing te permite declarar
los tipados de los elementos en listas y
diccionarios.
Tuplas con Tipado Estático
Las tuplas son colecciones inmutables
que también pueden tener tipados
definidos.
Tipados Complejos en Python
Puedes combinar diferentes tipados
utilizando el módulo typing, lo que
permite crear estructuras complejas
como listas de diccionarios con tuplas.
Recomendaciones
Aunque Python es un lenguaje de
tipado dinámico, puedes usar la
herramienta mypy para realizar un
análisis estático de los tipados en tu
código. Esto es especialmente útil
para asegurarte de que los tipados
son correctos antes de ejecutar el
código.
.
Ventajas del Tipado Estático
Claridad: Mejora la legibilidad del código.
Prevención de errores: Detecta
problemas antes de la ejecución.
Colaboración: Facilita el trabajo en
equipos de desarrollo grandes.
Seguridad: Reduce la probabilidad de
errores complejos que son difíciles de
detectar en proyectos grandes.