python中为什么需要使用“if __name__ == '__main__'”语句
首先用最简洁的语言来说明一下 if __name__ == '__main__': 的作用:防止在被其他文件导入时显示多余的程序主体部分。
先举个例子,如果不用 if __name__ == '__main__': 会发生什么事:
首先在yy.py中调用cs.py
#yy.py
import cs
print('引用cs')
cs.cs()
print('程序结束!')
cs.py文件如下
#cs.py
def cs():
print('一打开cs!')
print('cs主函数!')
运行结果会是:
cs主函数!
引用cs
一打开cs!
程序结束!
分析:也就是说,如果你的目的只是调用cs.py中的cs()函数,那么你在导入的时候就不要使用import cs
因为一旦你使用了import cs
那么在运行至这一句导入代码时会自动运行一次cs.py,cs.py中的函数被封装不会被直接运行,但是cs.py中有没被封装的语句:
print('cs主函数!')
因此,这一句就会被多余地运行,哪怕你完全不需要这一句,你的目的只是调用cs.py中的cs()函数
就算是使用
from cs import cs
运行结果还是一样。
那么怎么才能避免运行不需要的代码段呢?那就把不需要的代码段也当成函数运行,但是这个函数有点特殊,他要区分是自身运行还是被调用导入而运行,如果是自身运行那么就把那些代码段显示出来,如果被调用就屏蔽掉。
于是 if __name__ == '__main__': 便应运而生
我们修改一下代码
只修改一下cs.py的代码:
def cs():
print('已打开cs!')
if __name__ == '__main__':
print('cs主函数!')
之后运行yy.py
结果如下:
引用cs
已打开cs!
程序结束!
到这一步,大家应该知道 if __name__ == '__main__': 是干什么用的了吧!
---------------------
作者:南宫第一
来源:CSDN
原文:https://blog.csdn.net/qq_27017791/article/details/80212016
版权声明:本文为博主原创文章,转载请附上博文链接!
python中为什么需要使用“if __name__ == '__main__'”语句的更多相关文章
- python中关于不执行if __name__ == '__main__':测试模块的解决
1.新建测试脚本文件: 2.编辑测试脚本 import unittest import requests import json import HTMLTestRunner ur1 = 'http:/ ...
- Python中的if __name__='__main__'语句的作用
笔者在自学Python的过程中,对于if __name__='__main__'的用法感到很困惑,在think Python一书中原作者的源代码是这么解释if __name__='__main__'语 ...
- Python中if __name__=="__main__" 语句在调用多进程Process过程中的作用分析
2018年2月27日 于创B515 引言 最近准备学习一下如何使用Python中的多进程.在翻看相关书籍.网上资料时发现所有代码都含有if __name__=="__main__" ...
- Python之自测代码标识__name__=='__main__'
__name__是python的默认的自测代码标识,其他文件导入该python文件时,不会执行这行代码以下部分. def yangfan(a): print('yangfan %s' %a) prin ...
- Python中的上下文管理器和with语句
Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围.本文是针对于该功能的思考总结. 为什么需要上下文管理器? 首先, ...
- python中的变量,字符串,用户交互,if语句
一:python介绍 python的创始人为吉多·范罗苏姆,创始时间是1989年. 1python是一门什么样的语言 python是一门解释型弱类型语言★ 弱类型:弱类型的变量可以变,强类型的变量不能 ...
- python中if __name__ == '__main__': 的解析
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一 ...
- python中if __name__ == '__main__'
python 中__name__ = '__main__' 的作用,到底干嘛的? 有句话经典的概括了这段代码的意义: “Make a script both importable and execut ...
- python基础之python中if __name__ == '__main__': 的解析
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...
随机推荐
- 《Java虚拟机原理图解》 1.2.3、Class文件中的常量池详解(下)
CONSTANT_Fieldref_info, CONSTANT_Name_Type_info) 一般而言,我们在定义类的过程中会定义一些 field 字段,然后会在这个类的其他地方(如方法中)使用到 ...
- rdb转为rdf
dump-rdf -f N-TRIPLE -b http://localhost:2020/ -o iswc.nt terrsearch.ttl
- PostgreSQL SystemTap on Linux
http://digoal126.wap.blog.163.com/w2/blogDetail.do;jsessionid=3949B03DE151DA0E55D807466C5E630B.yqblo ...
- CentOS6.5升级手动安装GCC4.8.2 与 CentOS 6.4 编译安装 gcc 4.8.1
http://blog.163.com/zhu329599788@126/blog/static/6669335020161179259975 http://www.cnblogs.com/codem ...
- UNIDAC如何驱动MSSQL2000
UNIDAC如何驱动MSSQL2000 如下图,PROVIDER必须设置为PRSQL.默认的PRAUTO,如果操作系统是XP可以,如果是WIN7以上的,不可以. 原因是MSSQL NATIVE 11已 ...
- Ubuntu Desktop 常用软件
IDE: eclipse ***: firefox,登陆账号可以同步书签,我用了全球账号. firefox插件:FireGestures(手势), NoSquint(全局缩放),Url to QRco ...
- [Testing] Static Analysis Testing JavaScript Applications
The static code analysis and linting tool ESLint is the de-facto standard for linting JavaScript pro ...
- zoj How Many Shortest Path
How Many Shortest Path 题目: 给出一张图,求解最短路有几条.处理特别BT.还有就是要特别处理map[i][i] = 0,数据有不等于0的情况! 竟然脑残到了些错floyd! ! ...
- JSP简明教程:汇总
原创JSP教程,简洁明了,不含废话. JSP简明教程(一):JSP简单介绍 JSP简明教程(二):JSP基本的语法 JSP简明教程(三):JSP隐含对象 JSP简明教程(四):EL表达式语言.Java ...
- Django-权限信息自定义标签
自定义权限标签: import re from django.template import Library from django.conf import settings register = L ...