Tutorial básico de Python: cinco métodos de sobrecarga de módulos

Preparación ambiental

Cree una nueva carpeta foo con un archivo bar.py debajo

$ tree foo
foo
└── bar.py

0 directories, 1 file

El contenido de bar.py es muy simple, solo escriba una declaración de impresión

print("successful to be imported")

Siempre que bar.py se importe una vez, se ejecutará una impresión

Prohibida la importación duplicada

Debido a la existencia de sys.modules, cuando importa un módulo importado, en realidad no tiene ningún efecto.

>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>

Repita el método de importación uno

Si está utilizando python2 (recuerde agregar un __init__.py a la carpeta foo), hay un método de recarga que se puede usar directamente

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:660193417
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> reload(bar)
successful to be imported
<module 'foo.bar' from 'foo/bar.pyc'>

Si usa python3, hay más métodos, consulte a continuación para obtener más detalles.

Repita el método de importación 2

Si usa Python3.0 -> 3.3, puede usar el método imp.reload

>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> import imp
>>> imp.reload(bar)
successful to be imported
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>

Pero este método está en desuso en Python 3.4+

<stdin>:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

Repita el método de importación tres

Si está utilizando Python 3.4+, utilice el método importlib.reload

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:660193417
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> import importlib
>>> importlib.reload(bar)
successful to be imported
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>

Repita el método de importación cinco

Dado que sys.modules afecta nuestra importación repetida, ¿podemos simplemente eliminar el paquete importado?

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:660193417
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> sys.modules['foo.bar']
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>
>>> del sys.modules['foo.bar']
>>>
>>> import foo.bar
successful to be imported

Supongo que te gusta

Origin blog.csdn.net/m0_67575344/article/details/124150474
Recomendado
Clasificación