development:python:init_.py

__init__.py

  • este fichero marca un directorio como un paquete regular
    • permite importar todo de golpe o un modulo concreto
  • permite la importación de módulos
  • el contenido de ese fichero se ejecuta automaticamente con la primera importación
    • variables de paquete
    • definir funciones o clases
    • estructurar el espacio de nombres
  • un directorio sin ese fichero es un espacio de nombres del paquete, pero puede causar importaciones más lentas
  • usar el fichero para declarar una API pública
  • modulo
    • definición: código python en un fichero
    • nombre: el nombre del fichero sin .py
    • contenido: funciones, clases y variables
    • objetivo: organización pequeños proyectos, reutilización de código
    • importación: directa (import module)
  • paquete:
    • definición: directorio con 1 o más módulos
    • nombre: nombre del directorio
    • contenido: modulos y opcionalmente subpaquetes
    • objetivo: organización grandes proyectos, reutilización de código
    • importación: paquete o modulos (import package.module)
  • un espacio de nombres se define tanto con un paquete regular como un paquete de espacio de nombres (los que carecen del __init__.py)
  • Python los trata diferentes:
    >>> import tools
    >>> tools.__path__
    ['/tools_project/tools']
     
    >>> import tools_ns # paquete de espacio de nombres
    >>> tools_ns.__path__
    _NamespacePath(['/tools_project/tools_ns'])
  • el intérprete busca en todo el path para asegurarse que ha encontrado todos los ficheros necesarios
  • la importación se hace en tiempo de ejecución, no se pueden detectar coliciones antes
  • el uso de paquetes hace más predecibles las imporaciones
  • Puede estar vacío, para identificar el directorio como un paquete
  • Si contiene código se ejecuta 1 vez con la primera importación
  • Permite importar otros modulos o paquetes
  • definición de variables:
    __init__.py
    __version__ = "1.0.0"
    magic_number = 42
    import tools
    tools.__version__
  • development/python/init_.py.txt
  • Darrera modificació: 19/02/2026 03:58
  • per mate