Los paquetes son una forma de estructurar muchos paquetes y módulos que ayudan en una jerarquía bien organizada de conjuntos de datos, haciendo que los directorios y módulos sean de fácil acceso. Al igual que hay diferentes unidades y carpetas en un sistema operativo para ayudarnos a almacenar archivos, los paquetes nos ayudan a almacenar otros subpaquetes y módulos, para que el usuario pueda usarlos cuando sea necesario.
Creación y exploración de paquetes
Para decirle a Python que un directorio en particular es un paquete, creamos un archivo llamado __init__.py dentro de él y luego se considera como un paquete y podemos crear otros módulos y subpaquetes dentro de él. Este archivo __init__.py se puede dejar en blanco o se puede codificar con el código de inicialización del paquete.
Para crear un paquete en Python, debemos seguir estos tres simples pasos:
- Primero, creamos un directorio y le damos un nombre de paquete, preferiblemente relacionado con su funcionamiento.
- Luego ponemos las clases y las funciones requeridas en él.
- Finalmente, creamos un archivo __init__.py dentro del directorio, para que Python sepa que el directorio es un paquete.
Ejemplo de creación de paquete
Veamos este ejemplo y veamos cómo se crea un paquete. Vamos a crear un paquete llamado Autos y construir tres módulos en él, a saber, Bmw, Audi y Nissan.
- Primero creamos un directorio y lo llamamos Cars.
- Entonces necesitamos crear módulos . Para hacer esto necesitamos crear un archivo con el nombre Bmw.py y crear su contenido poniendo este código en él.
# Python code to illustrate the Modules
class
Bmw:
# First we create a constructor for this class
# and add members to it, here models
def
__init__(
self
):
self
.models
=
[
'i8'
,
'x1'
,
'x5'
,
'x6'
]
# A normal print function
def
outModels(
self
):
print
(
'These are the available models for BMW'
)
for
model
in
self
.models:
print
(
'\t%s '
%
model)
Luego creamos otro archivo con el nombre Audi.py y le agregamos un tipo de código similar con diferentes miembros.
# Python code to illustrate the Module
class
Audi:
# First we create a constructor for this class
# and add members to it, here models
def
__init__(
self
):
self
.models
=
[
'q7'
,
'a6'
,
'a8'
,
'a3'
]
# A normal print function
def
outModels(
self
):
print
(
'These are the available models for Audi'
)
for
model
in
self
.models:
print
(
'\t%s '
%
model)
Luego creamos otro archivo con el nombre Nissan.py y le agregamos un tipo de código similar con diferentes miembros.
# Python code to illustrate the Module
class
Nissan:
# First we create a constructor for this class
# and add members to it, here models
def
__init__(
self
):
self
.models
=
[
'altima'
,
'370z'
,
'cube'
,
'rogue'
]
# A normal print function
def
outModels(
self
):
print
(
'These are the available models for Nissan'
)
for
model
in
self
.models:
print
(
'\t%s '
%
model)
- Finalmente creamos el archivo __init__.py. Este archivo se colocará dentro del directorio Cars y se puede dejar en blanco o podemos poner este código de inicialización en él.
from
Bmw
import
Bmw
from
Audi
import
Audi
from
Nissan
import
Nissan
- importar en Paquetes
Supongamos que los directorios de autos y marcas son paquetes. Para que sean un paquete, todos deben contener el archivo __init__.py, ya sea en blanco o con algún código de inicialización. Supongamos que todos los modelos de los coches sean módulos. El uso de paquetes ayuda a importar cualquier módulo, individualmente o completo.
Supongamos que queremos obtener Bmw i8. La sintaxis para eso sería:'import' Cars.Bmw.x5
Al importar un paquete o subpaquetes o módulos, Python busca en todo el árbol de directorios buscando el paquete en particular y procede sistemáticamente según lo programado por el operador punto.
Si algún módulo contiene una función y queremos importar eso. Por ejemplo, a8 tiene una función get_buy(1) y queremos importar eso, la sintaxis sería:import Cars.Audi.a8 Cars.Audi.a8.get_buy(1)
Al usar solo la sintaxis de importación, se debe tener en cuenta que el último atributo debe ser un subpaquete o un módulo, no debe ser ninguna función o nombre de clase.
- ‘desde…importar’ en Paquetes
Ahora, cada vez que necesitemos usar dicha función necesitaremos escribir toda la línea larga después de importar el paquete principal. Para superar esto de una manera más simple, usamos la palabra clave ‘from’. Para esto primero necesitamos traer el módulo usando ‘from’ e ‘import’:from Cars.Audi import a8
Ahora podemos llamar a la función en cualquier lugar usando
a8.get_buy(1)
También hay otra forma que es menos larga. Podemos importar directamente la función y usarla donde sea necesario. Primero impórtalo usando:
from Cars.Audi.a8 import get_buy
Ahora llame a la función desde cualquier lugar:
get_buy(1)
- ‘from…import *’ en Paquetes
Mientras usamos la sintaxis from…import , podemos importar cualquier cosa, desde submódulos hasta clases, funciones o variables, definidas en el mismo módulo. Si el atributo mencionado en la parte de importación no está definido en el paquete, el compilador lanza una excepción ImportError.
La importación de submódulos puede causar efectos secundarios no deseados que ocurren al importar submódulos explícitamente. Por lo tanto, podemos importar varios módulos a la vez usando la sintaxis *. La sintaxis es:from Cars.Chevrolet import *
Esto importará todo, es decir, módulos, submódulos, funciones, clases, desde el subpaquete.
Ahora, usemos el paquete que creamos. Para hacer esto, cree un archivo sample.py en el mismo directorio donde se encuentra el paquete Cars y agregue el siguiente código:
# Import classes from your brand new package from Cars import Bmw from Cars import Audi from Cars import Nissan # Create an object of Bmw class & call its method ModBMW = Bmw() ModBMW.outModels() # Create an object of Audi class & call its method ModAudi = Audi() ModAudi.outModels() # Create an object of Nissan class & call its method ModNissan = Nissan() ModNissan.outModels() |
Varias formas de acceder a los paquetes
Veamos este ejemplo e intentemos relacionar los paquetes con él y cómo podemos acceder a él.
Este artículo es una contribución de Chinmoy Lenka . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA