Python主函数
主函数就像程序的入口点。然而, Python解释器从第一行开始运行代码。代码的执行从起始行开始,逐行执行。主要函数在哪里或它在哪里都没有关系。
由于Python中没有main()
函数,当运行Python程序的命令被赋予解释器时,将执行 0 级缩进的代码。但是,在此之前,它将定义一些特殊变量。 __name__
就是这样一个特殊变量。如果源文件作为主程序执行,则解释器将__name__
变量设置为具有值__main__
。如果此文件是从另一个模块导入的, __name__
将设置为模块的名称。
__name__
是一个内置变量,计算结果为当前模块的名称。
例子:
# Python program to demonstrate
# main() function
print("Hello")
# Defining main function
def main():
print("hey there")
# Using the special variable
# __name__
if __name__=="__main__":
main()
输出:
Hello
hey there
执行上述程序时,解释器将 name 的初始值声明为“main”。当解释器到达 if 语句时,它检查 name 的值,当 if 的值为 true 时,它运行 main函数,否则不执行 main函数。
作为模块的主要函数
现在,当我们将Python脚本作为模块导入时, __name__
变量的值与导入的Python脚本的名称相同。
示例:假设有两个文件(File1.py 和 File2.py)。 File1 如下。
# File1.py
print("File1 __name__ = %s" %__name__)
if __name__ == "__main__":
print("File1 is being run directly")
else:
print("File1 is being imported")
输出:
File1 __name__ = __main__
File1 is being run directly
现在,当将 File1.py 导入 File2.py 时,__name__ 的值会发生变化。
# File2.py
import File1
print("File2 __name__ = %s" %__name__)
if __name__ == "__main__":
print("File2 is being run directly")
else:
print("File2 is being imported")
输出:
File1 __name__ = File1
File1 is being imported
File2 __name__ = __main__
File2 is being run directly
如上所见,当File1.py直接运行时,解释器将__name__
变量设置为__main__
,当通过File2.py导入运行时,__name__变量设置为Python脚本的名称,即File1。因此,可以说如果 __name__ == “__main__” 是在使用Python File1.py 之类的命令从命令行运行脚本时运行的程序部分。