python 学习笔记04 模块的加载和重加载(reload)

Python 3.0 把reload 内置函数移到了imp标准库模块中。它仍然像以前一样重载文件,但是,必须导入它才能使用。在Python3.0中,运行import imp 并使用imp.reload(M),或者使用from imp import reload .

如果使用python2.6 则不需要导入直接使用,因为针对python 2.6 reload是内置函数。

模块import 导入一般在第一次导入的时候运行一次,如果想在次运行导入的模块则必须使用我们上面所说的reload函数。这也是为什么会有reload函数的原因。

还有一个点大家需要注意一下:

用一个from载入的名字不会通过一个reload直接更行,但是,用一条import 语句访问的名字则会。如果你的名字似乎不会在一次重载后改变,尝试使用import 和module.attribute名称引用。

注意: import和from列出模块名时,都是使用myfile,没有.py后缀。当python寻找实际文件时,知道在搜索程序中加上后缀名。然和,系统shell命令行中,一定要记得加上后缀名,但是import语句则不用。

import vs from:应该指出,from语句在某种意义上战胜了模块的名称空间分隔的目的,因为from把变量从一个文件复制到另一个文件,这可能导致在导入的文件中相同名字的变量被覆盖(并且,如果发生这种情况的话,不会为你给出警告)。这根本上会导致名称空间重叠到一起,至少在复制的变量上会重叠。

因此,有些人建议使用import而不是from,然而,我不建议这么做,不晋以为from更短,而是因为传说中的问题在实际中几乎不是问题。此外,这是由你来控制的问题,可以在from中列出想要的变量;只要你劣迹他们将是要赋的值,这不会比编写赋值语句更危险,而复制是你可能想要使用的另一功能。

reload 是不可传递的,重载一个模块的话只会重载该模块,而不能够重载该模块所导入的任何模块,因此,有时候必须reload多个文件。

猜你喜欢

转载自blog.csdn.net/qq_34608423/article/details/88403504