Red de conocimiento informático - Conocimiento de la instalación - ¿Alguien puede guiarme sobre cuáles son las diferencias entre archivos, módulos y paquetes en Python? Por favor explícalo en detalle, gracias. . . .

¿Alguien puede guiarme sobre cuáles son las diferencias entre archivos, módulos y paquetes en Python? Por favor explícalo en detalle, gracias. . . .

Python adopta la estructura de clases, módulos y paquetes cuando se ocupa de la reutilización de funciones y la división granular de funciones. Este procesamiento es similar a las clases y espacios de nombres en C++, pero está más cerca de los conceptos utilizados en Java.

Clases

El concepto de clases aparece en muchos idiomas y es fácil de entender. Encapsula datos y operaciones para su reutilización futura.

Módulo

Módulo, en Python, puede entenderse como correspondiente a un archivo. Después de crear un archivo de script, se definen ciertas funciones y variables. Puede reutilizar estas funciones y variables importando este módulo en otros archivos que necesiten estas funciones. Generalmente, se utilizan module_name.fun_name y module_name.var_name. Este uso semántico hace que el módulo parezca una clase o espacio de nombres, y module_name? puede entenderse como un calificador de nombre. El nombre del módulo es el nombre del archivo menos el sufijo .py. A continuación se muestra un ejemplo sencillo: #moduel1.py

def say(word):

print word

#caller.py

importar módulo1

imprimir __nombre__

imprimir módulo1.__nombre__

módulo1.say('hola')

$ llamador de python.

__main__

módulo1

hola

El ejemplo demuestra cómo llamar a un módulo desde un archivo. También se muestra aquí un atributo de módulo interesante __name__, cuyo valor lo establece el intérprete de Python. Si el archivo de script se llama como programa principal, su valor se establece en __main__. Si otros archivos lo importan como un módulo, su valor es su nombre de archivo. Este atributo es muy útil y a menudo se puede utilizar para pruebas de módulos integrados. A menudo verá escritos similares a los siguientes en algunos lugares. Estas declaraciones solo se ejecutan cuando se llaman como programa principal.

if __name__ == '__main__':? app = wxapp(0) app.MainLoop()

Ruta de búsqueda del módulo

En el ejemplo anterior, ¿cuándo? Después de importar el módulo1, el intérprete de Python buscará el archivo module1.py en el directorio actual y luego lo buscará desde la variable de entorno PYTHONPATH. Si esta variable de entorno no está configurada, no importa, el intérprete también instalará el. preset Algunos directorios para buscar. Es por eso que pueden suceder todas las cosas buenas cuando importa los siguientes módulos estándar.

import os import sys import threading

...

Estos directorios de búsqueda se pueden cambiar dinámicamente en tiempo de ejecución, por ejemplo, module1.py no se coloca en el directorio actual y colóquelo en un rincón remoto. Aquí debe informarle a Python de alguna manera, como sys.path. sys.path devuelve la lista de búsqueda de módulos. Al comparar la salida y el código antes y después, debería poder comprender cómo agregar una nueva ruta. Es muy simple, simplemente use append() o insert() de la lista para agregar un nuevo directorio.

#module2.py

importar sistema

importar sistema operativo

imprimir sys.path

workpath = os.path.dirname(os. path.abspath(sys.argv[0]))

sys.path.insert(0, os.path.join(workpath, 'modules'))

print sys. ruta

$ python module2.py

['e:\\Project\\Python', 'C:\\WINDOWS\\system32\\python25.zip', .. .]

['e:\\Project\\Python\\modules', 'e:\\Project\\Python', 'C:\\WINDOWS\\system32\\python25.zip' , ...]

Otros puntos

Los módulos pueden contener declaraciones ejecutables al igual que definiciones de funciones. Estas declaraciones ejecutables se utilizan generalmente para inicializar el módulo. Estas declaraciones solo se ejecutan la primera vez que se importa el módulo. Esto es muy importante. Algunas personas piensan que estas declaraciones se importarán y ejecutarán varias veces, pero no es así.

Cuando el módulo se importa y ejecuta, el intérprete de Python generará un archivo .pyc en el mismo directorio que el archivo del módulo para acelerar el inicio del programa. Sabemos que Python es un lenguaje de secuencias de comandos interpretado y .pyc es un código de bytes compilado. Este trabajo se completará automáticamente sin la necesidad de que los programadores lo realicen manualmente.

Paquete

Después de crear muchos módulos, es posible que queramos organizar algunos archivos con funciones similares en la misma carpeta. Aquí necesitamos usar el concepto de paquete. Los paquetes corresponden a carpetas y la forma de utilizar los paquetes es similar a la de los módulos. Lo único que hay que tener en cuenta es que cuando una carpeta se utiliza como paquete, la carpeta debe contener el archivo __init__.py, principalmente para evitar el uso del nombre de la carpeta. como cadena ordinaria. El contenido de __init__.py puede estar vacío. Generalmente se usa para inicializar algunos paquetes o establecer el valor __all__ se usa en la declaración de importación de nombre de paquete * para exportar todos los módulos definidos.