urls template example python python-import

python - template - Importando todas las funciones de un paquete: "from.*Import*"



httpresponse django example (2)

  1. importlib permite importar cualquier módulo de Python desde un nombre de cadena. Puede automatizarlo pasando por la lista de archivos en la ruta.

  2. Es más pitón usar __all__ . Consulte here para más detalles.

Gol

Quiero poder importar (en __init__.py ) todas las funciones de cada archivo dentro de mi paquete.

Uso

Por ejemplo en esta estructura de carpetas.

manage.py - scripts/ -- __init__.py -- tests.py -- deploy.py

Actualmente estoy haciendo lo siguiente:

manage.py:

from scripts import *

script / init .py:

from .tests import * from .deploy import *

Pero, cada vez que agrego otro archivo al paquete tengo que agregar una línea de importación en el script/__init__.py , que es un poco molesto.


Puedes hacerlo manualmente, pero no deberías .

Por qué realmente no quieres hacer esto:

Terminará con un espacio de nombres en el que entender lo que es y de dónde provendrá será extremadamente difícil, con dificultades para aumentar a medida que lo hace el tamaño del proyecto en general. Además de no ser intuitivo para Python, piense en alguien más que pueda ver su código o, peor aún, piense en usted releyéndolo después de 1 mes y no recuerde lo que está sucediendo. No necesitas eso en tu vida.

Además de eso, cualquier función que exponga al importador que pueda superponerse con otras funciones en otros módulos se verá ensombrecida por la más reciente que se haya importado. Como ejemplo, piense en dos scripts que contienen la misma función foo() y observe lo que sucede.

>>> from scrpt1 import * >>> foo() Script 1 >>> from scrpt2 import * >>> foo() Script 2

Tampoco necesito eso en tu vida. Especialmente cuando es tan fácil eludir al ser explícito.

Aquí están algunas líneas relacionadas del texto contenido en PEP-20 :

Explícito es mejor que implícito.

Sea explícito sobre el lugar donde se definen sus funciones. No "espagueti" su código. Usted querrá golpearse en el futuro si opta por una malla de todas las cosas en un solo lugar.

Los casos especiales no son lo suficientemente especiales para romper las reglas.

Realmente se explica por sí mismo.

Los espacios de nombres son una gran idea, ¡hagamos más de ellos!

"más de esos!" , no menos; No te pierdas lo maravillosos que son los espacios de nombres. Python se basa en ellos; segregar su código en diferentes espacios de nombres es la base de la organización del código.