在Python中,__name__
是一个特殊的内置变量(前后各有两个下划线)。当一个Python文件被执行时,其__name__
的值会被设定为__main__
。如果这个文件被导入为模块,那么__name__
的值则会是模块的名字。
这个变量常被用来检测一个脚本是否被作为主程序运行,而不是被导入为一个模块。如果__name__
的值是__main__
,那么说明这个脚本正在作为主程序运行,那需要运行主程序的代码,否则主程序的代码不执行。
例如,你可能有一个叫做main.py
的脚本,它包含了一段代码,这段代码需要被作为主程序运行,而不是被其他脚本导入为模块。在这种情况下,你可以使用if __name__ == "__main__":
语句来确保这段代码只会在main.py
被作为主程序运行时才会被执行。
下面是一个具体的例子:
# main.py
def some_function():
print("some_function called")
if __name__ == "__main__":
print("This script is running as the main program, __name__ = %s." % __name__)
else:
print("This function will be run if the script is imported as a module, __name__ = %s." % __name__)
如果你直接运行main.py
,那么会输出"This script is running as the main program, __name__ = __main__."
。如果你在其他脚本中导入main.py
,那么会输出"This function will be run if the script is imported as a module."。
准备一个import_main.py,导入main定义的函数:
import main
main.some_function()
运行import_main.py,那么会输出"This function will be run if the script is imported as a module, __name__ = name. some_function called."
。