由于Python中没有main()函数, 因此当将运行python程序的命令提供给解释器时, 将执行0级缩进的代码。但是, 在此之前, 它将定义一些特殊变量。 __name__是这样的特殊变量之一。如果将源文件作为主程序执行, 则解释器将__name__变量设置为具有值" __main__"。如果此文件是从另一个模块导入的, 则__name__将设置为该模块的名称。
__name__是一个内置变量, 其结果为当前模块的名称。
因此, 可以通过将它与if语句结合使用, 以检查当前脚本是单独运行还是正在其他位置导入, 如下所示。
考虑两个单独的文件File1和File2。
# File1.py
print "File1 __name__ = %s" % __name__
if __name__ = = "__main__" :
print "File1 is being run directly"
else :
print "File1 is being imported"
# File2.py
import File1
print "File2 __name__ = %s" % __name__
if __name__ = = "__main__" :
print "File2 is being run directly"
else :
print "File2 is being imported"
Now the interpreter is given the command to run File1.py.
python File1.py
Output :
File1 __name__ = __main__
File1 is being run directly
And then File2.py is run.
python File2.py
Output :
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之类的命令从命令行运行脚本时运行的程序的一部分。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
注意怪胎!巩固你的基础Python编程基础课程和学习基础知识。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。