La guía de estilo de Python sugiere agrupar las importaciones de esta manera:
Las importaciones deben agruparse en el siguiente orden:
- importaciones de bibliotecas estándar
- importaciones de terceros relacionadas
- importación local de aplicaciones / bibliotecas específicas
Sin embargo, no menciona nada sobre cómo deberían establecerse las dos formas diferentes de importación:
from foo import bar
import foo
Hay varias formas de ordenarlos (supongamos que todas esas importaciones pertenecen al mismo grupo):
primero
from..import
, luegoimport
from g import gg from x import xx import abc import def import x
primero
import
, luegofrom..import
import abc import def import x from g import gg from x import xx
orden alfabético por nombre del módulo, ignorando el tipo de importación
import abc import def from g import gg import x from xx import xx
PEP8 no menciona el orden preferido para esto y las características de "importación de limpieza" que algunos IDE probablemente solo hayan hecho lo que prefiera el desarrollador de esa característica.
Estoy buscando otro PEP que aclare esto o un comentario / correo electrónico relevante del BDFL (u otro desarrollador principal de Python). No publique respuestas subjetivas que indiquen su propia preferencia.
fuente
Ctrl+F
es tiempo constante sin importar la forma de organizar las importaciones ...)Respuestas:
Las importaciones generalmente se ordenan alfabéticamente y se describen en varios lugares además de PEP 8.
Los módulos ordenados alfabéticamente son más rápidos de leer y buscar . Después de todo, Python tiene que ver con la legibilidad. También es más fácil verificar que algo se importa y evita importaciones duplicadas
No hay nada disponible en PEP 8 con respecto a la clasificación, por lo que se trata de elegir qué usar.
Según algunas referencias de sitios y repositorios de buena reputación y popularidad, el orden alfabético es el camino.
por ejemplo, así:
O
El repositorio oficial de Reddit también establece que, en general, se debe utilizar el pedido de importación PEP-8. Sin embargo, hay algunas adiciones que es
Referencias
PD: la utilidad isort ordena automáticamente tus importaciones.
fuente
import x
y lasfrom y import z
declaraciones entre sí. No veo respuesta a esta pregunta en tu respuesta. Básicamente, está replanteando parte de la pregunta que ya explica la forma PEP8 de agrupar por tipo de importación. Si hay una respuesta a esta pregunta específica en alguno de los enlaces, cite las partes relevantes.import datetime
seguido porimport os
mucho más difícil de leer queimport os
seguidoimport datetime
. Y la diferencia en la búsqueda de ellos dada la clasificación léxica frente a la clasificación no léxica es tan trivial que no importa por completo, incluso de una manera leve.import _tkinter
vsimport unittest
)De acuerdo con las convenciones de codificación internas de la CIA (parte de la filtración de WikiLeaks Vault 7 ), las importaciones de Python deben agruparse en tres grupos:
Las importaciones deben ordenarse lexicográficamente dentro de estos grupos, ignorando el caso:
fuente
from x import y
debería ser antes o despuésfrom y import x
: ¿es el nombre del módulo o la importación real lo que determina el orden?El PEP 8 no dice nada al respecto. No existe una convención para este punto, y no significa que la comunidad de Python necesite definir una absolutamente. Una elección puede ser mejor para un proyecto, pero lo peor para otro ... Es una cuestión de preferencias para esto, ya que cada solución tiene ventajas y desventajas. Pero si desea seguir las convenciones, debe respetar la orden principal que citó:
Por ejemplo, Google recomienda en esta página que la importación se clasifique lexicográficamente , en cada categoría (estándar / terceros / la suya). Pero en Facebook, Yahoo y lo que sea, tal vez sea otra convención ...
fuente
Recomiendo reorder-python-imports . Sigue la segunda opción de la respuesta aceptada y también se integra en pre-commit , lo cual es muy útil.
fuente
Todas las
import x
declaraciones deben estar ordenadas por el valor dex
y todas lasfrom x import y
declaraciones deben estar ordenadas por el valor dex
en orden alfabético y los grupos ordenados defrom x import y
declaraciones deben seguir el grupo ordenado deimport x
declaraciones.fuente
Siento que la respuesta aceptada es demasiado detallada. Aquí está TLDR:
Guía de estilo de código de Google
Entonces, la tercera opción es correcta:
fuente