il Pyt la libreria standard di hon lo usa, quindi è sicuramente appropriato e sicuro. Vedere la os
module source per un esempio eccellente:
if 'posix' in _names:
name = 'posix'
linesep = '\n'
from posix import *
try:
from posix import _exit
except ImportError:
pass
import posixpath as path
import posix
__all__.extend(_get_exports_list(posix))
del posix
E 'abbastanza comune condizionalmente moduli di importazione in pitone. Invece di if
, vedrete spesso una combinazione try:
/except ImportError:
troppo:
try:
from subprocess import check_output
except ImportError:
# Python 2.6 and before
def check_output(*popenargs, **kwargs):
from subprocess import Popen
if 'stdout' in kwargs:
raise ValueError('stdout argument not allowed, it will be '
'overridden.')
process = Popen(stdout=PIPE, *popenargs, **kwargs)
output, unused_err = process.communicate()
retcode = process.poll()
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
raise CalledProcessError(retcode, cmd)
return output
Qui, abbiamo praticamente utilizziamo l'equivalente morale di un test if
: se è possibile importare check_output
, si fa così, altrimenti definire la funzione completa Qui.
Una dichiarazione di importazione è solo una rilegatura di un pezzo di codice esterno a un nome locale. L'utilizzo di un flusso di controllo if
per il controllo dell'importazione non è diverso dall'assegnazione di una variabile in un'istruzione if
a tale riguardo. È necessario assicurarsi di non finire usando il nome senza che sia definito in alcun modo.
fonte
2012-10-12 14:17:58
assicurati di non chiamare nessuna funzione proveniente da questo pacchetto se non viene importata – njzk2
Sì, lo è. Perché ti dà fastidio? –
Volevo chiedere e essere sicuro. Forse dovrei usare la parola 'preoccupata'. L'inglese non è la mia lingua madre. –