python中if __name__ == '__main__'是什么?
__name__
和__main__
认识
作用:一般用于测试程序的功能,if __name__ == '__main__':
下面的代码会被执行,但当前.py
文件被当做模块导入的时候,main下面的代码就不会被执行,防止测试代码被执行。
语法:
if __name__ == '__main__':
要执行的测试模块
if __name__ == "__main__":
可以看成是python程序的入口,就像java
中的main()方法,但不完全正确。
在.py
文件中,除了def后面定义函数外的代码都会被认为是“main”方法中的内容,从而从上而下执行。
如果只是写一个print('hello world'),那这一句话就是一个程序,因此不需要所谓的"main"方法入口,直接运行测试就可以。
但如果是测试函数功能,我们就需要在.py
文件中写上if__name__=="__main__"
,再调用函数,当然,如果你不写的话,也没关系,也可以直接将函数加括号进行调用。
我们写的目的就是防止后面会把当前.py
文件当做模块导入其他.py
文件中,从而误触发测试代码。
__name__
的变化
1、__name__
其实就是一个内置属性,在自己的py文件中被执行,__name__
属性的值就是__main__
:
示例代码:
# test.py
print("first")
def say_hello():
print(__name__)
if __name__ == '__main__':
print(__name__)
say_hello()
运行结果:
first
__main__
__main__
2、将test.py
文件导入其他文件中,__name__
就会变为当前模块的名字,例如:__test__
。
实例代码:
# work.py
import test # 导入test
if __name__ == '__main__':
test.say_hello()
print(__name__)
执行结果:
first
test
__main__
总结:python不像JAVA中一样拥有main()方法的特点。所谓的入口其实也就是一个if条件语句,判断成功就执行下面if中的代码。JAVA等其他语言中会有特定的内置函数去识别main()方法入口,在main()方法中从上而下执行。
python中if __name__ == '__main__'是什么?的更多相关文章
- python 中if __name__ = '__main__' 的作用
python 中if __name__ = '__main__' 的作用 前言 首先我们要知道在python里面万物皆对象,模块也是对象,并且所有的模块都有一个内置属性 __name__. 一个模块的 ...
- 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__.一个 ...
- FAQ: Python中if __name__ == '__main__':作用
#hello.pydef sayHello(): str="hello" print(str); if __name__ == "__main__": prin ...
- python中if __name__ == '__main__': 解析
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一 ...
- Python中if __name__ == '__main__':作用
#hello.pydef sayHello(): str="hello" print(str); if__name__=="__main__": print ( ...
- Python常见经典 python中if __name__ == '__main__': 的解析
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...
- python中if __name__ == '__main__': 的解析(转载)
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...
- python 中的__name__ == "__main__"(转)
有句话经典的概括了这段代码的意义: “Make a script both importable and executable” 意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可 ...
随机推荐
- EXAM-2018-08-21
EXAM-2018-08-21 自己真的是菜的恐怖 D:Fence Building 欧拉公式:V-E+F=2 在平面中:V为顶点个数,E为边数,F为区域数 在简单几何体中:V为顶点个数,E为边数,F ...
- IOS之Core Foundation框架和Cocoa Foundation框架的区别(转)
Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能.下面列举该框架支持进行管理的数据以及可提供的 ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换
Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...
- 49),PHP, 重写
- 吴裕雄--天生自然 JAVASCRIPT开发学习:对象 实例(2)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- django操作非ORM创建的表
问题:django的ORM怎么连接已存在的表,然后进行增删查改操作? 工作中会遇见很多二次开发的时候,表都是已经创建好的,用django的ORM进行二次开发,怎么操作数据库中的表呢? 下面介绍 ...
- python学习笔记(1)python数据类型
一.数据类型计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要 ...
- gitbook安装及初步使用
gitbook安装 https://www.jianshu.com/p/421cc442f06c https://blog.csdn.net/lu_embedded/article/details/8 ...
- telnet不是内部或外部命令的问题解决
在windows DOS 命令窗口中输入telnet命令,出现如下提示信息: 可能是没有安装telnet客户端的原因,又得开始捣鼓了 www.2cto.com 依次点击"开 ...
- HDU-1040-As Easy As A+B(各种排序)
希尔排序 Accepted 1040 0MS 1224K 564 B G++ #include "cstdio" using namespace std; ]; int main( ...