Sobes.tech
Junior

¿Cuál es la diferencia entre archivos .py y .pyc?

sobes.tech AI

Respuesta de la IA

.py — es el código fuente en Python, escrito por una persona y legible por el intérprete. .pyc — es el bytecode compilado por el intérprete a partir del archivo .py para acelerar ejecuciones posteriores.

El intérprete de Python compila automáticamente los archivos .py en .pyc en la primera importación del módulo y los guarda para no recompilar en cada ejecución siguiente. Los archivos .pyc se almacenan en el directorio __pycache__ o junto al archivo .py correspondiente en versiones antiguas.

# Ejemplo del contenido de un archivo .py
def greet(name):
  print(f"¡Hola, {name}!")
# Bytecode del archivo .pyc (no legible directamente)
# c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00s\x0e\x00\x00\x00d\x00\x00GHd\x01\x00k\x02\x00\x83\x01\x00\x00d\x02\x00R\x00\xfa\x0bgreet.py\x05\x00\x00\x00s\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00C\x00\x00\x00s\x05\x00\x00\x00\x83\x00\x00\x00\x00Sq\x00\x00\x00s\x0c\x00\x00\x00\\x01\x00\x00\x00\x00\x01\x00\x00\x00r\x02\x00\x00\x00r\x02\x00\x00\x00\xfa\x0b<frozen greet>\x01\x00\x00\x00s\x08\x00\x00\x00\xe9\x00\x00\x00\x00r\x03\x00\x00\x00r\x04\x00\x00\x00r\x0b\x00\x00\x00r\x04\x00\x00\x00N\x86\x04\x00\x00\x00GHGHGHGHGHGHGHGHGHGHGHGHGHGHGHGHGHGHG\x0c\x12\x00\x00\x00s\x00\x00\x00\x00

En resumen:

Archivo Descripción Propósito Legibilidad
.py Código fuente Desarrollo, escritura de lógica Alta (por humanos)
.pyc Bytecode compilado Aceleración de inicio Baja (por máquina)

La existencia de .pyc no afecta la ejecución del código, ya que el intérprete solo los usa para optimizar la carga de módulos. Si se modifica un archivo .py, el archivo .pyc se vuelve a crear automáticamente.