Esiste qualche effetto sulle importazioni inutilizzate in uno script Python?Le importazioni inutilizzate in Python ostacolano le prestazioni?
Qualsiasi tipo di risposta è apprezzata.
Esiste qualche effetto sulle importazioni inutilizzate in uno script Python?Le importazioni inutilizzate in Python ostacolano le prestazioni?
Qualsiasi tipo di risposta è apprezzata.
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.
"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.
spero che nessuno stia scrivendo librerie con un tale codice. Questa importazione sarebbe pericolosa anche se l'OP intendeva ** utilizzare ** quel modulo. – joaquin
@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
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
Quindi, il programma richiederà più tempo a confronto con le importazioni non necessarie. destra ? –
vero è vero – joaquin
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