__name__
__name__
属于Python中的内置类属性,代表对应程序名称。如果当前运行的程序是主程序,此时__name__
的值就是__main__
,反之,则是对应的模块名。以一个例子来说明:
创建first_module.py文件,文件内容及运行first_module.py文件的结果如下所示:
print("first_module's __name__:", __name__)
# 运行结果
# first_module's __name__: __main__
接着,创建second_module.py文件,在该文件中导入first_module.py文件,文件内容及运行second_module.py文件的结果如下所示:
import first_module
# 运行结果
# first_module's __name__: first_module
如上所示:
多用于模块自身的调试。比如,修改first_module.py文件,增加函数first_module_func,然后运行first_module.py文件,此时的运行结果如下,可以看到此时由于__name__
的取值为__main__
,所以会运行if语句中调用的函数的内容。
print("first_module's __name__:", __name__)
def first_module_func(a, b):
print("a+b=", a+b)
if __name__ == '__main__':
first_module_func(1, 2)
# 运行结果
# first_module's __name__: __main__
# a+b= 3
接着,运行second_module.py文件,文件内容和运行结果如下,即由于此时的first_module.py文件中__name__
不等于__main__
,所以不会执行first_module_func函数。
import first_module
# 运行结果
# first_module's __name__: first_module
因此,当我们在调试first_module.py文件中的一些函数时,可以通过这种方式来运行需要调试的函数,比如上面定义的first_module_func函数。此时调试通过之后也不需要删除调试的代码,其他模块引用时不会执行调试代码,从而输出一些无用信息。