Aprendamos sobre las diferentes formas en que realmente podemos importar estos módulos, hasta ahora, solo hemos
aprendido sobre la importación, pero a veces las cosas pueden ponerse bastante agitadas.
Por ejemplo, podemos tener otro paquete dentro de otro paquete.
Si, por ejemplo, creo una nueva carpeta aquí y digo nuevo paquete de Python, lo llamaremos más.
Haga clic en Compras, OK, verá que he iniciado otro paquete dentro de un paquete que tiene su propio
archivo.
Y movamos esto ahora para mover el refractor y lo moviremos dentro de la carpeta de más compras,
digamos más.
Compras.
Hago clic en Aceptar, verá que moví este módulo aquí, así que tengo un paquete dentro de un paquete.
Y la forma en que accederíamos a esto es simplemente comprando un punto más.
Punto de compras, carrito de compras.
Y copiemos eso y hagamos lo mismo aquí.
Y ahora, cuando hago clic en ejecutar.
Verá que todavía funciona, pero esto se está volviendo un poco loco.
Puedes imaginar que tenemos más y más paquetes que constantemente tenemos que hacer este punto, este punto, y esto
se está poniendo un poco.
Demasiado largo y feo.
Entonces, ¿cómo podemos mejorar esto?
Bueno, una forma de hacer esto de una manera más limpia es hacer algo como esto en lugar de
decir importar, decimos a partir de esto.
Parte, quiero importar la función, así que aquí estoy diciendo, oye, desde paquete, nombre, paquete, nombre,
módulo, importación, cualquier función que desee.
En nuestro caso, queremos importar la función de compra.
Como puede ver aquí, puedo hacer eso y en mi código.
Puedo correr como si fuera parte de este archivo principal.
Si ejecuto esto.
Verás que todavía funciona.
Impresionante, definitivamente es más limpio y también podemos hacer esto con utilidad.
Puedo decir de la utilidad de importación y de hecho importar los dos archivos o las dos funciones.
Entonces eso es multiplicar.
Y si queremos otra función, podemos simplemente agregar una coma y decir dividir.
Entonces ahora podemos imprimir Apple.
O por Apple además de dividir.
Digamos cinco por dos.
Y también podemos multiplicar.
Y asegúrese de que sea una coma aquí, porque es una función como esta, de modo que si ejecuto esto, verá
eso.
Aquí vamos.
Esto también funciona.
Así que esta es una forma realmente agradable de limpiar tu abrigo.
También puede hacer algo como esto donde dice desde paquete, nombre, paquete, nombre.
Y luego importar el módulo completo, digamos que quiero importar el módulo del carrito de compras, puedo decir importar, por
lo que paquete punto paquete o podría haber hecho un paquete e importar el carrito de compras
del módulo real.
Así que ahora accedería a él como este carrito de compras, punto por.
Y esto también va a funcionar.
Ahora, la razón por la que podría querer hacer esto en lugar de lo que teníamos antes, es que a veces puede
obtener colisiones con nombre.
Permítanme mostrarles, digamos que tuve una impresión y luego aquí usamos la función max, que nos da que es una función incorporada,
le damos un iterador y encuentra el máximo para nosotros, de modo que si ejecuto esto, usted Veré
que el máximo en esta lista es tres.
Bueno, imagina en nuestra función de utilidad, digamos que en lugar de dividir o agregamos un máximo que
simplemente dice.
Devoluciones y ups.
Bueno, si vuelvo a mi DCPI principal.
Y.
Consigo Max como mi función y hago clic en ejecutar.
Bueno, ya ves, consigo un ahí.
Entiendo que Max toma cero argumentos posicionales, pero se dio, pero se dio uno porque ahora Max no quiere decir
lo que pensamos que queríamos decir, al menos en este archivo hemos importado Max y bueno.
Max tiene una función completamente diferente ahora, por lo que en realidad podemos anular las funciones existentes, por lo
que al usar algo como este carrito de compras, nos aseguramos de tener solo un caso que podríamos haber llamado
colisión.
Pero todas las propiedades o todos los métodos que tiene el arte de comprar están conectados a un carrito de compras.
Entonces, en lugar de tener varias funciones que podrían anularse, solo tengo un espacio de nombres.
Y, por cierto, esta también es una de las razones por las que no recomiendo hacer algo como esto,
en realidad puedes hacer import star.
Y lo que esto dice es, oye, desde el módulo de utilidades, importa todo.
Y cuando hagas eso.
Verás que una vez más obtenemos un aire porque también importa el máximo, y como ni siquiera sabemos qué se está
importando en este momento, no podemos verlo.
Tenemos que ir al archivo para verlo.
Cuando tengamos un aire como este, estaremos como, ¿qué está pasando?
Pensé, Max está trabajando y es por esta línea.
Por lo tanto, siempre es bueno ser explícito y decir exactamente lo que desea importar.
Pero eliminemos Max por ahora, pero como puede ver, los módulos pueden ser importantes de diferentes maneras.
Mi recomendación es ser siempre explícito y decir exactamente lo que desea importar.
Y el formato generalmente sigue usando la declaración de importación seguida por el módulo del paquete o importa el módulo, o puede
hacer la declaración from para darle el paquete, el paquete de soporte y el módulo si lo desea, o puede hacer
un módulo y luego decir importar y la función específica o el módulo en sí, muchas formas
de hacerlo dependiendo de su necesidad.
La conclusión clave aquí es que los módulos y paquetes nos ayudan a tener buenas prácticas de ingeniería y a construir grandes proyectos
de manera organizada, pero aún así hacer que todos estos archivos se comuniquen entre sí.
Bien, eso fue mucho, aprendamos más en el siguiente video.