Python中如何判断当前文件是否作为主程序运行?

2026-05-16 09:211阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计526个文字,预计阅读时间需要3分钟。

Python中如何判断当前文件是否作为主程序运行?

对于Python初学者来说,在看别人代码时经常会遇到`if __name__==__main__:`这一行。这时心里就开始吐槽:绝对又是装X,我特别不喜欢这句话,代码风格跑得这么好看!我刚接触编程就遇到了这一行。

对于Python初学者来说,在看别人代码时经常会看到​​if __name__ == "__main__"​​,这时心里就开始吐槽:“绝对又是装X,我特么不写这句话,代码不照样跑得好好的!

我刚开始碰到这行代码时,心里也是这样想的!

吐槽归吐槽,存在必然有存在的道理。现在就来看看这句代码到底是个啥意思,因为这句话能够帮你对Python模块的理解上一个层次。

通过例子来理解

只要你创建了一个模块(一个.py文件),这个模块就有一个内置属性name生成,该模块的name的值取决于如何应用这个模块。说人话就是,如果你直接运行该模块,那么​​__name__ == "__main__"​​;如果你 import 一个模块,那么模块name

如,创建一个test1.py:

def func(): print('hello, world!')if __name__ == "__main__":func()

模块中,首先定义了函数func(),用来打印出hello, world!,然后判断​​__name__​​是否等于​​__main__​​,如果等于,有打印,反之则反,现在运行该模块,结果为:

hello, world!

说明​​__name__​​​等于​​__main__​​。

这时,输入代码:

Python中如何判断当前文件是否作为主程序运行?

再创建一个test2.py:

import test1print('bye, world!')

模块中,首先import test1,然后打印bye, world!做测试用,运行该模块,结果为:

bye, world!


运行结果仅有bye, world!,说明​​__name__​​不等于​​__main__​​。

通过上面test1.py和test2.py两个模块,我们现在可以得出一个非常实用的结论:如果模块是被直接运行的,则代码块被运行,如果模块被import,则代码块不被运行。

本文共计526个文字,预计阅读时间需要3分钟。

Python中如何判断当前文件是否作为主程序运行?

对于Python初学者来说,在看别人代码时经常会遇到`if __name__==__main__:`这一行。这时心里就开始吐槽:绝对又是装X,我特别不喜欢这句话,代码风格跑得这么好看!我刚接触编程就遇到了这一行。

对于Python初学者来说,在看别人代码时经常会看到​​if __name__ == "__main__"​​,这时心里就开始吐槽:“绝对又是装X,我特么不写这句话,代码不照样跑得好好的!

我刚开始碰到这行代码时,心里也是这样想的!

吐槽归吐槽,存在必然有存在的道理。现在就来看看这句代码到底是个啥意思,因为这句话能够帮你对Python模块的理解上一个层次。

通过例子来理解

只要你创建了一个模块(一个.py文件),这个模块就有一个内置属性name生成,该模块的name的值取决于如何应用这个模块。说人话就是,如果你直接运行该模块,那么​​__name__ == "__main__"​​;如果你 import 一个模块,那么模块name

如,创建一个test1.py:

def func(): print('hello, world!')if __name__ == "__main__":func()

模块中,首先定义了函数func(),用来打印出hello, world!,然后判断​​__name__​​是否等于​​__main__​​,如果等于,有打印,反之则反,现在运行该模块,结果为:

hello, world!

说明​​__name__​​​等于​​__main__​​。

这时,输入代码:

Python中如何判断当前文件是否作为主程序运行?

再创建一个test2.py:

import test1print('bye, world!')

模块中,首先import test1,然后打印bye, world!做测试用,运行该模块,结果为:

bye, world!


运行结果仅有bye, world!,说明​​__name__​​不等于​​__main__​​。

通过上面test1.py和test2.py两个模块,我们现在可以得出一个非常实用的结论:如果模块是被直接运行的,则代码块被运行,如果模块被import,则代码块不被运行。