el Pyt La biblioteca estándar hon lo usa, por lo que definitivamente es apropiado y seguro. Ver el os
module source para un excelente ejemplo:
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
Es bastante común a los módulos de importación en forma condicional pitón. En lugar de if
, a menudo se ve una combinación try:
/except ImportError:
también:
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
Aquí, utilizamos básicamente el equivalente moral de una prueba de if
: Si usted puede importar check_output
, de hacerlo, de lo contrario definir la función completa aquí.
Una instrucción de importación es solo un enlace de una pieza externa de código a un nombre local. El uso de un flujo de control if
para controlar la importación no es diferente de la asignación de una variable en una declaración if
al respecto. Debes asegurarte de que no termines usando el nombre sin que esté definido de ninguna manera.
simplemente asegúrese de no llamar a ninguna función que provenga de este paquete si no se importa – njzk2
Sí lo es. Porque te molesta? –
Quería preguntar y estar seguro. Tal vez debería usar palabras 'preocupadas'. El inglés no es mi lengua materna –