Breaking

Post Top Ad

Your Ad Spot

viernes, 14 de junio de 2019

Creando e importando módulos en Python

Introducción

En Python, un módulo es un archivo autónomo con declaraciones y definiciones de Python. Por ejemplo, file.pypuede considerarse un módulo llamado fileEsto difiere de un paquete en que un paquete es una colección de módulos en directorios que dan estructura y jerarquía a los módulos.
Los módulos nos ayudan a dividir los programas grandes en archivos pequeños que son más manejables. Con los módulos, la reutilización del código se convierte en una realidad. Supongamos que tenemos una función que se utiliza con frecuencia en diferentes programas. Podemos definir esta función en un módulo y luego importarla a los distintos programas sin tener que copiar su código cada vez.
En este artículo, veremos cómo crear módulos de Python y cómo usarlos en el código de Python.

Módulos de escritura

Un módulo es simplemente un archivo de Python con la .pyextensión. El nombre del archivo se convierte en el nombre del módulo. Dentro del archivo, podemos tener definiciones e implementaciones de clases, variables o funciones. Estos pueden ser utilizados en otros programas de Python.
Comencemos por crear una función que simplemente imprima "Hello World". Para hacer esto, crea un nuevo archivo de Python y guárdalo como hello.pyAgregue el siguiente código al archivo:
def my_function():  
    print("Hello World")
Si ejecuta el código anterior, no devolverá nada. Esto se debe a que no le hemos dicho al programa que haga nada. Es cierto que hemos creado una función nombrada my_function()dentro del código, pero no hemos llamado o invocado la función. Cuando se invoca, esta función debe imprimir el texto "Hello World".
Ahora, muévase al mismo directorio donde guardó el archivo anterior y cree un nuevo archivo llamado main.pyAgregue el siguiente código al archivo:
import hello

hello.my_function()  
Salida
Hello World  
La función fue invocada con éxito. Comenzamos importando el módulo. El nombre del archivo era hello.py, por lo tanto, el nombre del módulo importado es hello.
Además, tenga en cuenta la sintaxis que hemos utilizado para invocar la función. Esto se denomina "notación de puntos", que nos permite llamar a la función especificando primero el nombre del módulo y luego el nombre de la función.
Sin embargo, esa es solo una forma de importar el módulo e invocar la función. Podríamos haberlo hecho de la siguiente manera:
from hello import my_function

my_function()  
Salida
Hello World  
En el ejemplo anterior, la primera línea ordena al intérprete de Python que importe una función nombrada my_functiondesde un módulo llamado helloEn tal caso, no tiene que usar la notación de puntos para acceder a la función, simplemente puede llamarla directamente.
Sin embargo, en el caso de que nuestro hellomódulo tenga múltiples funciones, la declaración from hello import my_functionno importará todas hellolas funciones a nuestro programa, solo my_functionSi intenta acceder a cualquier otra función, se generará un error. Tiene que importar todo el módulo o importar cada una de las funciones individuales para poder usarlas.
Podemos definir una variable dentro de un módulo, que luego puede ser utilizada por otros módulos. Para demostrar esto, abra el archivo hello.pyy agregue el siguiente código:
def my_function():  
    print("Hello World")

# The variable that'll be used in other modules
name = "Nicholas"  
Ahora, abra el main.pyarchivo y modifíquelo de la siguiente manera:
import hello

hello.my_function()

print(hello.name)  
Salida
Hello World  
Nicholas  
Hemos invocado con éxito tanto la función como la variable definida en el módulo, ya que importamos todo el módulo en lugar de solo la my_function()función.
Anteriormente dijimos que podemos definir una clase dentro de un módulo. Veamos cómo hacer esto en el siguiente ejemplo. Abra el hello.pyarchivo y modifíquelo de la siguiente manera:
def my_function():  
    print("Hello World")

# Defining our variable
name = "Nicholas"

# Defining a class
class Student:  
    def __init__(self, name, course):
        self.course = course
        self.name = name

    def get_student_details(self):
        print("Your name is " + self.name + ".")
        print("You are studying " + self.course)
Aquí hemos definido una clase llamada StudentDos variables han sido definidas en esta clase, namecourseEl método get_student_details()también se ha definido dentro de este, que imprime los detalles del alumno en la consola.
Ahora, abra el archivo main.pyy modifíquelo de la siguiente manera:
import hello

hello.my_function()

print(hello.name)

nicholas = hello.Student("Nicholas", "Computer Science")  
nicholas.get_student_details()  
Salida
Hello World  
Nicholas  
Your name is Nicholas.  
You are studying Computer Science  
En el script anterior, nuevamente usamos la notación de puntos para crear un objeto de la studentclase desde el hellomódulo. Luego usamos la get_student_details()función para obtener los detalles del estudiante.
Aunque los módulos consisten principalmente en definiciones de clase (en la mayoría de los casos), es posible que ejecuten su propio código también cuando se importan. Para demostrar esto, modifiquemos el hello.pyarchivo, donde tenemos una definición de la función my_function(), junto con la llamada a la función:
def my_function():  
    print("Hello World")

my_function()  
Ahora, abra el archivo main.pyy elimine todas las líneas excepto las siguientes:
import hello  
Salida
Hello World  
La salida anterior muestra que definimos y llamamos la función dentro del módulo. Cuando se importa el módulo, devuelve directamente el resultado de la función sin tener que invocar la función. Este comportamiento no siempre es deseado, pero es útil para ciertos casos de uso, como la carga previa de datos desde la memoria caché cuando se importa el módulo.

Importando todos los objetos del módulo

Para importar todos los objetos (funciones, variables, clases, etc.) de un módulo, podemos usar la import *declaración. Por ejemplo, para importar todos los objetos contenidos en el hellomódulo, podemos usar la siguiente declaración:
from hello import *  
Después de agregar la declaración anterior a un programa, podremos usar cualquier función, variable o clase contenida en el hellomódulo sin tener que prefijarlo hello.

Accediendo a un módulo desde otro camino

En Python, los módulos se utilizan en más de un proyecto. Por lo tanto, no tiene sentido si mantiene sus módulos en el directorio de uno de los proyectos, ya que otros proyectos no podrían usarlo tan fácilmente.
Tiene un par de opciones cada vez que necesita acceder a un módulo que no está almacenado en el mismo directorio que su programa. Discutamos esto en las siguientes secciones:

Anexando Rutas

Para importar un módulo desde otra ruta, primero debe importar el sysmódulo, así como cualquier otro módulo de Python que desee utilizar en su programa.
El sysmódulo es proporcionado por la biblioteca estándar de Python y proporciona funciones y parámetros que son específicos del sistema. La path.append()función del sysmódulo se puede usar para agregar la ruta del módulo al proyecto actual.
Para demostrar esto, corte el hello.pyarchivo del directorio donde tiene el archivo main.pyPégalo en otro directorio. En mi caso, lo he pegado en el directorio "F: \ Python".
Ahora, abra el archivo main.py, importe el sysmódulo y especifique la ruta en la que el intérprete de Python buscará los archivos. Esto se demuestra a continuación:
import sys  
sys.path.append('F:/Python/')

import hello  
Salida
Hello World  
En el script anterior, la línea sys.path.append('F:/Python/')le dice al intérprete de Python que incluya esta ruta en la lista de rutas que se buscarán al importar los módulos.

Añadiendo un módulo a la ruta de Python

El método anterior funciona solo si importa el sysmódulo. Si no importa el sysmódulo y no especifica la ruta al módulo, se generará un error. Para que el módulo esté disponible para todo el sistema, puede agregarlo a la ruta donde Python normalmente verifica los módulos y paquetes. De esta manera, no tendrá que importar el sysmódulo y especificar la ruta al módulo como lo hemos hecho en la sección anterior.
Antes de hacer cualquier otra cosa, primero debe identificar la ruta que Python busca para los módulos y paquetes. Simplemente abra la línea de comandos de su sistema operativo y ejecute el pythoncomando. Esto te llevará a la terminal de Python.
Importe el sysmódulo de la siguiente manera:
import sys  
A continuación, puede ejecutar el siguiente comando para imprimir la ruta:
print(sys.path)  
La salida contendrá al menos una ruta del sistema. Si lo haces desde un entorno de programación, obtendrás varias rutas. En mi caso, obtuve lo siguiente:
$ python
Python 2.7.10 (default, Oct 23 2015, 19:19:21)  
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.  
>>> import sys
>>> print(sys.path)
['', '/Library/Python/2.7/site-packages/six-1.10.0-py2.7.egg', '/Library/Python/2.7/site-packages/cffi-1.2.1-py2.7-macosx-10.9-intel.egg', '/Library/Python/2.7/site-packages/pycparser-2.14-py2.7.egg', '/Library/Python/2.7/site-packages/virtualenv-13.1.2-py2.7.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/Library/Python/2.7/site-packages']
>>> 
Su objetivo debe ser encontrar el que está utilizando en el entorno actual. Debes buscar algo como lo siguiente:
/Library/Python/2.7/site-packages
Mueve tu hello.pyarchivo a la ruta. Después de eso, podrá importar el hellomódulo desde cualquier directorio de la manera habitual, como se muestra a continuación:
import hello  
Salida
Hello World  

Conclusión

Esto marca el final de este artículo. Un módulo es simplemente un archivo de Python con un conjunto de variables y definiciones de funciones. Un módulo facilita la reutilización del código, ya que puede definir una función en un módulo e invocarla desde diferentes programas en lugar de tener que definir la función en cada programa. Aunque un módulo se usa principalmente para definiciones de funciones y clases, también puede exportar variables e instancias de clases.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas