网站首页 > 基础教程 正文
我们在编写python程序或看别人python代码的时候,经常会看到这句“if__name__==__main__”,它到底有什么作用,怎么用,什么时候用?勇哥就通过这篇文章来帮助大家搞懂这些疑问。
1、首先我们要明白一点,python程序不同于C和C++语言,不需要main()函数作为主程序入口。python中一个模块中的 程序是从上往下执行的,一个python源码文件就是一个模块,如下图所示,cc.py就是一个模块。
2、python中使用的变量分为预定义变量和自定义变量,预定义变量是python本身内部提前定义好的,多用下划线开头以下划线结束来表示。比如__name__,__file__就是一个预定义变量。其实__name__是python预定义的全局变量,在模块内部用来表示模块名称的,如果模块是被导入的,则__name__的值就是模块的名称,如果模块被直接执行,则__name__的值则为__main__ 如下图所示。
我们平时编写的模块要么直接自己调用自己来运行,要么被别人调用来运行。一般来说大部分模块都是被导入,被别人调用来执行,也就是说被别人集成,充当别人的“配件“。
3、综合上述,我们知道所有的模块都是有能力来执行代码的,也就是说, 那些没有缩进的代码行在模块被导入时就会被执行, 不管是不是真的需要执行。如果你不希望某些代码被导入时执行,可以使用if__name__==”__main__”:加以保护。
假如 cc模块中的代码如下图所示,我在创建一个mytest模块,我的意图是在mytest模块中通过导入cc模块中的add函数来使用。
当我在mytest中只写了一条导入语句,然后运行mytest模块,发现cc模块中的第4行语句自动执行了,这个显然不是我想要的,如下图所示。
如果解决这个问题那?我们可以把导入时不希望运行的语句或测试cc模块本身的语句放到if __name__==”__main__”所属的语句里就可以了。我把cc模块中的代码改为如下图所示,这样就解决上述问题,即使你调用add函数也不存在问题了。
为什么这样就不会自动执行那,是因为当一个模块被别的模块导入时,它的名字就是它真实的名字比如cc,不在是__main__。所以cc模块中的if __name==”__main__”下面的语句就不会自动执行。通常我们会把测试本模块的代码放到它的下边,这样做的好处是既可以满足测试本模块代码的功能,也可以在被别人导入时,测试代码不会被自动执行。
我是码农阿勇,喜欢的话,关注我们,你的认可是我们最大的努力方向,感谢小伙伴们一如既往的支持我们,期待留下宝贵建议。
猜你喜欢
- 2024-11-02 Python教程:条件if控制语 python if条件语句如何进行多条件判断
- 2024-11-02 一文看懂:Python中的if __name__=="__main__"的含义
- 2024-11-02 python关键字专题if python关键字吗
- 2024-11-02 Python if __name__ 的作用介绍 python里if __name__="__main__"
- 2024-11-02 为什么python里要 if __name__ == ‘__main__’
- 2024-11-02 Python写每天进步1%的力量 python 每天增长
- 2024-11-02 零基础学python第五天之if python代码if
- 2024-11-02 Python的if分支结构,超简单 python中if语句的书写结构
- 2024-11-02 python笔记之if条件判断 python中if判断
- 2024-11-02 两分钟掌握python中 ‘if name == “_ main _” ‘的用途
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)