Exhibido por Wakagi
módulo personalizado
Además de utilizar los módulos integrados proporcionados por el sistema, también podemos escribir un módulo para nuestros propios programas. Un .py
archivo es un módulo, por lo que los módulos personalizados son muy simples, básicamente equivalentes a crear un .py
archivo. Sin embargo, cabe señalar que si un .py
archivo va a ser utilizado por otros códigos como módulo, el .py
nombre del archivo debe seguir las reglas de nomenclatura de los identificadores.
ruta de búsqueda del módulo
Crear un módulo es muy simple Las reglas de nomenclatura del identificador de instalación crean un .py
archivo que es un módulo. Pero la pregunta es, ¿dónde debemos colocar el .py
archivo creado y usar la declaración en el código import
para encontrar este módulo?
sys
Las propiedades de los módulos incorporados de Python path
enumeran los directorios que buscan módulos cuando el programa se está ejecutando. Solo necesita colocar los módulos que creamos en cualquiera de estos directorios.
import sys
print(sys.path)
[
'C:\\Users\\chris\\Desktop\\Test',
'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip',
'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37\\DLLs',
'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37\\lib',
'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37',
'C:\\Users\\chris\\AppData\\Roaming\\Python\\Python37\\site-packages',
'C:\\Users\\chris\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages'
]
__all__
uso de
Cuando se utiliza la importación de todo el contenido de un módulo from <模块名> import *
, es esencialmente para encontrar __all__
las propiedades de este módulo e __all__
importar todo el contenido declarado en las propiedades. Si no __all__
se establece ningún atributo en este módulo, todo el contenido de este módulo se importará en este momento.
miembros privados en un módulo
Las variables y funciones que comienzan con un guión bajo en el módulo _
son miembros privados del módulo. Cuando se importa el módulo, _
las variables que comienzan con un guión bajo no se importarán de manera predeterminada. Pero no es obligatorio y, _
a veces, está bien si un código se ve obligado a usar una variable que comienza con . Pero no se recomienda encarecidamente usarlo de esta manera, ya que puede causar problemas.
Resumir
test1.py
: No hay __all__
atributo en el módulo
a = 'hello'
def fn():
print('我是test1模块里的fn函数')
test2.py
: Hay __all__
atributos en el módulo
x = '你好'
y = 'good'
def foo():
print('我是test2模块里的foo函数')
__all__ = ('x','foo')
test3.py
: Hay _
atributos que comienzan con
m = '早上好'
_n = '下午好'
def _bar():
print('我是test3里的bar函数')
demo.py
from test1 import *
from test2 import *
from test3 import *
print(a)
fn()
print(x)
# print(y) 会报错,test2的__all__里没有变量 y
foo()
print(m)
# print(_n) 会报错,导入test3时, _n 不会被导入
import test3
print(test3._n) # 也可以强行使用,但是强烈不建议
__name__
uso de
En el desarrollo real, después de que un desarrollador escribe un módulo, para que el módulo logre el efecto deseado en el proyecto, el desarrollador agregará información de .py
prueba al archivo por sí mismo, por ejemplo:
test1.py
def add(a,b):
return a+b
# 这段代码应该只有直接运行这个文件进行测试时才要执行
# 如果别的代码导入本模块,这段代码不应该被执行
ret = add(12,22)
print('测试的结果是',ret)
demo.py
import test1.py # 只要导入了tets1.py,就会立刻执行 test1.py 代码,打印测试内容
Para solucionar este problema, python dispone de una variable a la hora de ejecutar un archivo __name__
. En Python, cuando un .py
archivo se ejecuta directamente, el valor .py
del archivo __name__
es __main__
, por lo que se puede juzgar si un .py
archivo se ejecuta directamente o se importa como un módulo.
def add(a,b):
return a+b
if __name__ == '__main__': # 只有直接执行这个`.py`文件时, `__name__`的值才是 `__main__`
# 以下代码只有直接运行这个文件才会执行,如果是文件被别的代码导入,下面的代码不会执行
ret = add(12,22)
print('测试的结果是',ret)
Precauciones
Al personalizar módulos, debe prestar atención al hecho de que el nombre del módulo personalizado no debe ser el mismo que el nombre del módulo del sistema; de lo contrario, se producirán problemas.
Caso avanzado
[Python] Python se da cuenta del juego de adivinanzas: ¡desafía tu inteligencia y tu suerte!
[python] Use Selenium para obtener entradas (2023 Blog Star)
[Xiaobai debe ver] Python rastrea un ejemplo de datos de jugadores de la NBA
[Xiaobai debe ver] Visualización y procesamiento de datos del rastreador de Python
[Imprescindible para Xiaobai] Use Python para generar una lista personalizada de documentos de Word
Procesamiento y visualización de datos geoespaciales usando geopandas y shapely (.shp)
Utilice selenio para rastrear los datos de la lista de películas de Maoyan
Explicación detallada del principio y la implementación del algoritmo de mejora de imagen Retinex
Primeros pasos con los reptiles (1): aprenda los conceptos básicos y las habilidades de los reptiles
Conceptos básicos de programación orientada a objetos de Python y código de muestra
Guía de operación de archivos de Python: codificación, lectura, escritura y manejo de excepciones
Conjunto de herramientas de automatización de Selenium - Guía completa y tutoriales
Tutorial de los conceptos básicos del rastreador web de Python avanzados al combate real
Tutorial de procesamiento y análisis de datos de Pandas: desde lo básico hasta el combate real
Explicación detallada de los tipos de datos de uso común y las operaciones relacionadas en Python