‫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.
‫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, así que 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.
‫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 es también 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.