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. ...
随机推荐
- p2148 [SDOI2009]E&D
传送门 分析 https://www.luogu.org/blog/flashblog/solution-p2148 代码 #include<bits/stdc++.h> using na ...
- Ubuntu下成功安装台式机网卡realtek的rtl8188eu芯片驱动并实现AP功能
1,下载驱动 https://github.com/lwfinger/rtl8188eu 使用注意: https://github.com/lwfinger/rtl8188eu/issues/3 2. ...
- UIView 和 CALayer区别 为啥有UIView还要CALayer?
今天,被坑了,面试的时候没回答出来,特此记录一下 一.继承结构 1: UIView的继承结构为: UIResponder : NSObject UIResponder是用来响应事件的,也就是UIVie ...
- 第07章-Spring MVC 的高级技术
Spring MVC 的高级技术 1. Spring MVC配置的替代方案 1.1 自定义DispatcherServlet配置 AbstractAnnotationConfigDispatcherS ...
- (转)XSS危害——session劫持
原文地址:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的 ...
- Listview 利用Datapager进行分页
原文:http://lgm9128.blog.163.com/blog/static/421734292010513111851101/ <asp:ListView ID="ListV ...
- .netcore部署到IIS上出现HTTP Error 502.5 - Process Failure问题解决
首先网上是有很多解决方案,但是对我这个错误完全没用 如果你们没有环境首先得预装环境如下 1.首先在bing.com下搜索asp.net core download, 然后打开搜索到的信息.NET Do ...
- C# 中关于汉字与16进制转换的代码
/// <summary> /// 从汉字转换到16进制 /// </summary> /// <param name="s"></par ...
- 四、命令行模式和Node交互模式
请注意区分命令行模式和Node交互模式. 看到类似C:\>是在Windows提供的命令行模式: 在命令行模式下,可以执行node进入Node交互式环境,也可以执行node hello.js运行一 ...
- 初学python - 零碎的知识点
* 标识符命名规则 数字,字母,下划线组成,数字不能开头区分大小写 * 注释 单行:#:多行:‘ ‘ ‘ ,“”“: * 进制标识 b:二进制 o:八进制 d:十进制x:十六进制 转换:format( ...