Python脚本的“__name__”属性

每个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 *时全部正确导入。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注