每个Python脚本在运行时都有一个“__name__”属性。如果脚本作为模块被导入,则其“__name__”属性的值被自动设置为模块名;如果脚本独立运行,则其“__name__”属性值被自动设置为“__main__”。例如,假设文件nametest.py中只包含下面一行代码:
print(__name__)
在IDLE中直接运行该程序时,或者在命令行提示符环境中运行该程序文件时,运行结果如下:
__main__
而将该文件作为模块导入时得到如下执行结果:
>>> import nametest
Nametest
利用“__name__”属性即可控制Python程序的运行方式。例如,编写一个包含大量可被其他程序利用的函数的模块,而不希望该模块可以直接运行,则可以在程序文件中添加以下代码:
if __name__ == '__main__':
print('Please use me as a module.')
这样一来,程序直接执行时将会得到提示“Please use me as a module.”,而使用import语句将其作为模块导入后可以使用其中的类、方法、常量或其他成员。
附:编写自己的包与模块
在包的每个目录中都必须包含一个__init__.py文件,该文件可以是一个空文件,仅用于表示该目录是一个包。
__init__.py文件的主要用途是设置__all__变量以及所包含的包初始化所需的代码。其中__all__变量中定义的对象可以在使用from …import *时全部正确导入。