if __name__ == '__main__' 详解
1.__name__是啥
__name__ 是Python的模块名字。
手册解释:The name of the module.
2.__name__的值
首先,一个变量一次只有一个值。
其次,__name__的值python自动给。
比如,你的文件叫 hello.py,它在引入之后,__name__就是hello.
3.__main__是啥
是当前直接执行的模块的名字。python给的。
也就是说,当你的模块正在执行时,它的名字(__name__)就是 __main__。
那上面那个执行时还叫不叫hello呢,答案是不叫。他自己执行时叫自己 __main__,别人才叫他hello。
4.if __name__ == '__main__' 是啥
很明显,是一个判断。
5.有什么用
这个下面的代码是模块直接执行时才去运行。
有一些代码必须在模块直接执行时运行。可能你现在还没遇到。
你现在运行的代码,执行可能是单模块,所以对于你来说,判断和不判断都可以执行。
6.看例子
我有一个hello.py,内容如下:
- # coding: utf-8
- # 当前模块是 hello.py
- # 首先,你要有一个模块叫world.py,随便写啥都行
- # 导入模块
- import world
- # 打印导入的模块的名字(__name__)
- print(world.__name__)
- # 在当前文件打印__name__,这是当前模块的属性
- print(__name__)
- # 看看当前模块的名字是不是__main__
- if __name__ == '__main__':
- print("It's main")
- # 看看当前模块的名字是不是hello
- if __name__ == 'hello':
- print("It's hello")
现在,为了便于理解,在world.py写了以下代码:
- # coding: utf-8
- if __name__ == '__main__':
- print("It's main")
- if __name__ == 'world':
- print("It's world")
我们执行hello.py,输出如下
It's world
world
__main__
It's main
嗯,剩下的自己理解。
if __name__ == '__main__' 详解的更多相关文章
- Python3:if __name__ == '__main__' 详解
一般在风格比较好的代码中会有一行if __name__ == '__main__' :代码,这里说明一下这句代码的用处,先上两个代码test1.py和test2.py: # test1.py prin ...
- Python中 if __name__ == '__main__': 详解
一个python文件就可以看作是一个python的模块,这个python模块(.py文件)有两种使用方式:直接运行和作为模块被其他模块调用. __name__:每一个模块都有一个内置属性__name_ ...
- Python中if __name__ == "__main__"详解
比如你编写一个test.py文件,一个python文件就可以看作是一个python的模块,这个python模块(.py文件)有两种使用方式:直接运行使用和作为模块被其他模块调用. 解释下__ ...
- Python中的__name__和__main__含义详解
1背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main(): ...... if __name == "__m ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python中threading模块详解(一)
python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...
- python time 模块详解
Python中time模块详解 发表于2011年5月5日 12:58 a.m. 位于分类我爱Python 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括: ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- python异步并发模块concurrent.futures入门详解
concurrent.futures是一个非常简单易用的库,主要用来实现多线程和多进程的异步并发. 本文主要对concurrent.futures库相关模块进行详解,并分别提供了详细的示例demo. ...
随机推荐
- 无限级分类及生成json数据
第一步,先去数据库查询类别数据,然后交给生成json数据的函数处理,代码如下: /*生成类别JSON数据*/ public function wirteJson(){ $dataInfo = \thi ...
- HTML5之:link与title的区别
[link]标签:外联导入样式 例1:<link rel="stylesheet" type="text/css" href="theme.cs ...
- eWebEditor9.x整合教程-Xproer.WordPaster
版权所有 2009-2017 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webplug/wordpa ...
- Java 错误结果Throw/Throws
目录 java处理异常方式 throw的作用 throws的作用 方法原理 举例 总结 个人实例 1.java处理异常方式 在java代码中如果发生异常的话,jvm会抛出 ...
- vue记住密码功能
话不多说,直接上代码. html部分: <el-form :model="ruleForm2" :rules="rules2" ref="rul ...
- 【转】开源视频录制库LandscapeVideoCamera
非常强大的android 视频录制库,可以选择视频尺寸以及视频质量,只允许横屏录制. 使用Android自带的Camera应用可以录制视频,只需发送MediaStore.ACTION_VIDEO_CA ...
- wp7启动+幻灯片效果
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Wi ...
- 宏(使用注意事项、主要用途)------c++程序设计原理与实践(进阶篇)
使用宏的时候一定要小心:在c中没有真正有效的方法来避免使用宏,但宏带有严重的副作用,因为宏不遵守通常的c(或c++)作用域和类型规则——它只是一种文本替换. 宏的使用注意事项: 所以宏名全部大写. ...
- Django的文件上传以及预览、存储
思路: 文件上传通过前端的input标签,input设置display:none属性. 内容显示需要让前端通过<img>标签读取图片内容,可以通过<label>标签连接< ...
- 【bzoj4709】[Jsoi2011]柠檬 决策单调性+dp
Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们从 ...