2012-12-26 10 views

risposta

16

Inquina il tuo spazio dei nomi con nomi che potrebbero interferire con le tue variabili e occupare parte della memoria.
Inoltre, si avrà un tempo di avvio più lungo poiché il programma deve caricare il modulo.

In ogni caso, non diventerei troppo nevrotico con questo, come se si stesse scrivendo il codice si potrebbe finire per scrivere e cancellare import os continuamente mentre il codice viene modificato. Alcuni IDE come PyCharm rilevano le importazioni inutilizzate, quindi puoi fare affidamento su di esse dopo che il tuo codice è stato completato o quasi completato.

+1

Quindi, il programma richiederà più tempo a confronto con le importazioni non necessarie. destra ? –

+0

vero è vero – joaquin

+0

Il ritardo di avvio può essere visualizzato creando un gruppo di file con 'stampa" Ciao ", __name__' e quindi importandoli. Ogni cosa importata deve essere analizzata almeno una volta e rispetto alla versione pyc/cache viene interpretata almeno una volta per ciclo di esecuzione. Questo può diventare un po 'fuori mano, specialmente se un file importato importa altri file che importano ancora più file. – David

6

"inutilizzato" potrebbe essere un po 'più difficile da definire di quanto si pensi, ad esempio, questo codice in test.py:

import sys 
import unused_stuff 
sys.exit(0) 

unused_stuff sembra essere inutilizzati, ma se dovesse contenere:

import __main__ 
def f(x): print "Oh no you don't" 
__main__.sys.exit = f 

Quindi eseguire test.py non fa quello che ti aspetteresti da uno sguardo casuale.

+0

spero che nessuno stia scrivendo librerie con un tale codice. Questa importazione sarebbe pericolosa anche se l'OP intendeva ** utilizzare ** quel modulo. – joaquin

+2

@joaquin Vero, questo è un esempio estremo, ma ciò non significa che non ci siano moduli che, se caricati, hanno effetti collaterali più sottili. Era inteso come una banale illustrazione di un effetto collaterale :) – Flexo

+3

Ci sono due moduli che ho nella mia libreria personale la cui unica API è l'importazione, cioè, tutto ciò che fai è importarli nulla da chiamare. Il primo è nice.py, che esegue il programma con una priorità di processo inferiore, l'altro è timing.py, che installa un gestore di atexit per riportare il tempo trascorso e il timestamp quando termina il programma in esecuzione. Entrambi sembrerebbero inutilizzati, ma in realtà hanno solo un'API super minimalista. – PaulMcG

Problemi correlati