Nombre del paquete y nombre del módulo
-
Hay tres módulos en un paquete, mod1.py, mod2.py, mod3.py, pero ¿cómo asegurar que solo se importen mod1 y mod3 al importar módulos desde demopack import *?
Agregue una declaración en __init__ en demopackall=['mod1','mod3']
-
Atención de módulos en PEP8
- https://www.python.org/dev/peps/pep-0008/ - Versión en inglés de PEP8
- https://cloud.tencent.com/developer/news/332042 --PEP8 versión china
-
Importar
Las importaciones son generalmente en una sola línea, por ejemplo:
Buen estilo:
Mal estilo:
Esto también es posible:
Las importaciones a menudo se encuentran en la parte superior del archivo, después de los comentarios del módulo y la documentación de la cadena, y antes de las variables y constantes globales del módulo.
Las importaciones deben agruparse en el siguiente orden:
-
Importación de biblioteca estándar
-
Importaciones de terceros relacionadas
-
Aplicación local específica / importación de biblioteca
Coloque una línea en blanco entre cada grupo de importación.
Coloque las especificaciones __todas__ relevantes después de la importación.
Se recomiendan las importaciones absolutas porque son más fáciles de leer y si la configuración del sistema de importación es incorrecta (por ejemplo, cuando un directorio en el paquete termina en sys.path) funcionan mejor (al menos dan mejores mensajes de error):
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example
Las importaciones relativas explícitas se pueden utilizar para aceptar importaciones absolutas alternativas, especialmente cuando se trata de diseños de paquetes complejos, las importaciones absolutas son demasiado detalladas.
from . import sibling
from .sibling import example
El código de biblioteca estándar debe evitar diseños de paquetes complejos y utilizar importaciones absolutas.
Las importaciones relativas implícitas nunca deben usarse y se han eliminado en Python 3.
Al importar una clase desde un módulo que contiene una clase, generalmente es bueno escribir de la siguiente manera:
from myclass import MyClass
from foo.bar.yourclass import YourClass
Si este escrito lleva a un conflicto de nombre local, simplemente escriba:
import myclass
import foo.bar.yourclass
Evite el uso de importaciones de comodines (de import *) porque no deja claro qué nombres aparecen en el espacio de nombres, lo que confunde al lector y muchas herramientas automatizadas. Existe un caso de uso razonable para las importaciones de comodines, republicando una interfaz interna como parte de una API pública (por ejemplo, reescribiendo una interfaz implementada en Python puro, la interfaz define un módulo acelerador opcional y qué definiciones se reescribirán más adelante). No se)
Renombrado de esta manera, las siguientes pautas sobre interfaces públicas e internas aún se aplican.
Propiedades integradas a nivel de módulo
Los atributos incorporados a nivel de módulo (nombres con guiones bajos dobles), como __todos, autor , versión , deben colocarse después de la cadena de documentación del módulo, antes de cualquier declaración de importación, excepto de las importaciones __futuras__. Python exige que desde __future__ las importaciones deben preceder a cualquier código, y solo después de las cadenas de documentos a nivel de módulo.
from __future__ import barry_as_FLUFL
__all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles'
import os
import sys
```
模块名应该短,所有的字母小写。可以在模块名中使用下划线来提高可读性。Python包名也应该短,所有的字母小写,不鼓励使用下划线。
当一个C或C++书写的扩展模块,伴随Python模块来提供了一个更高层次(例如更面向对象)的接口时,C/C++模块名有一个前导下划线(如_socket)。