Ordine di importazione Python, mixaggio da ... import ... e import ... (e import ... as ...)

Oct 25 2020

Questo è il pasticcio di importazioni attualmente in cima al mio file:

import argparse
from copy import deepcopy
from functools import cmp_to_key, partial
from itertools import chain
import math
from multiprocessing import Pool
import os
import re
from typing import Dict, List, Set, Tuple
import xml.etree.ElementTree as ET

from third_party import Tool

Li ho organizzati in ordine alfabetico, per nome del pacchetto (?).

Penso che sembri estremamente brutto.

Quali sono i modi standard per organizzare questa sezione?

PEP8 (che ho letto) non è utile in questo caso:

Le importazioni dovrebbero essere raggruppate nel seguente ordine:

Importazioni di librerie standard.
Importazioni di terze parti correlate.
Importazioni specifiche dell'applicazione / libreria locale.
È necessario inserire una riga vuota tra ogni gruppo di importazioni.

Risposte

6 candied_orange Oct 25 2020 at 22:26

Le importazioni dovrebbero essere raggruppate nel seguente ordine:

Importazioni di librerie standard.
Importazioni di terze parti correlate.
Importazioni specifiche dell'applicazione / libreria locale.
È necessario inserire una riga vuota tra ogni gruppo di importazioni.

python.org - pep-0008 - #imports

Pep8 cita anche la guida allo stile GNU Mailman di Barry che offre una guida all'ordine più dettagliata:

Le importazioni dovrebbero essere raggruppate, con l'ordine che è:

  1. importazioni non da per librerie standard e di terze parti
  2. importazioni non provenienti dall'applicazione
  3. from-imports dalle librerie standard e di terze parti
  4. from-imports dall'applicazione

Le importazioni provenienti dovrebbero seguire le importazioni non provenienti. Le importazioni punteggiate dovrebbero seguire le importazioni non punteggiate. Le importazioni senza punti dovrebbero essere raggruppate per lunghezza crescente, mentre le importazioni con punti dovrebbero essere raggruppate alfabeticamente.

GNU Mailman Coding Style Guide

Negli anni ho scoperto che la cosa più importante è che tutti li organizzino allo stesso modo. Perché spesso le importazioni molto organizzate sembrano caos a chi non sa già come sono organizzate.

Sergi Nov 07 2020 at 05:28

Inizia a usare isort , ha impostazioni predefinite sane. E impostalo per l'esecuzione automatica al salvataggio sul tuo IDE o come hook pre-commit per semplificarti la vita.