多语言展示
当前在线:180今日阅读:126今日分享:42

Python3.x那些事儿:[40]更多关于模块的知识点

模块可以包含可运行的语句,也可以包含函数的定义。这些可运行语句是用来初始化模块。这些语句仅仅在import语句第一次碰到模块名字的时候来运行(当然如果模块文件被当成一个脚本来运行的话这些语句也会被运行)。每个模块都会有私有的符号表,这些符号表在内部函数调用时都是全局符号表。因此,模块的作者可以尽情的使用模块中的全局变量而不用担心其他的用户会与这些变量发生冲突。可以直接从外部直接调用模块的全局变量,module.itemname.在模块中还可以引用其他模块。一般情况下都是把import语句放在模块的最开头部分,当然这不是强制的,你也可以放在其他位置。被import的模块会被放在模块的全局符号表中。还有一种import语句的变种可以直接把模块中的函数或者变量直接导入到当前模块的全局符号表中。在上述方法中,模块名称并没有被导入到当前模块的符号表中,因此,fibo是不存在的,不能够引用的。还有一种变种可以导入模块中所有的名称。这种方式可以导入模块中的所有符号,除了以下划线开头的符号。一般情况下程序猿是不使用这种方式的,因为这会导入一批你自己都不知道的符号,从而可能会掩盖掉你自身定义的一些变量。从模块中导入所有符号是不被提倡的,甚至很多时候是会出现很多问题的。但是在交互式界面的时候这个方式可以用来把曾经在命令行中输入的所有变量保存起来。在一个交互式会话中,一个模块只会被导入一次,你即使使用多次Import语句来导入,也只会导入一次,后续的Import语句是不会被执行的。因此如果你导入的模块发生了变化,你需要重新启动解释器才能够感受到变化。如果一定要在本次会话中从新加载模块,可以使用imp.reload()方法。
推荐信息