python中的“main()方法”
估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看。但事实上python中是没有你理解中的“main()”方法的。言归正传
if __name__ == "__main__":可以看成是python程序的入口,就像java中的main()方法,但不完全正确。
事实上python程序是从上而下逐行运行的,在.py文件中,除了def后定义函数外的代码都会被认为是“main”方法中的内容从上而下执行。如果只是写个伟大的"hello world",不想写函数的话,仅仅是print('hello world')就可以,这就是一个“程序”,不需要所谓的“main”方法入口。当然如果是测试函数功能就需要在.py文件中写上if __name__ == "__main__",再调用函数。比如如下hello.py文件:
print("first")def sayHello():str = "hello"print(str);print(__name__+'from hello.sayhello()')if __name__ == "__main__":print ('This is main of module "hello.py"')sayHello()print(__name__+'from hello.main')
运行结果:
first
This is main of module "hello.py"
hello
__main__ from hello.sayhello()
__main__ from hello.main
懂我意思吧?先执行的第一行print再执行“入口”中的东西
话说回来,if __name__ == "__main__"这句话是个什么意思呢?
__name__其实是一个内置属性,指示当前py文件调用方式的方法。当上述例子运行的时候,整个程序中不管是哪个位置的__name__属性,值都是__main__,当这个hello.py文件作为模块被导入到另一个.py文件中(即import)比如说world.py,并且你运行的是world.py,此时hello.py中的__name__属性就会变成hello,所谓的入口因为if判断失败就不执行了
所以if语句的判断成功虚拟了一个main()方法。
说到了phthon是逐行执行的,所以当它读到import hello的时候,也会执行hello.py,比如运行如下world.py文件:
import hello#上一个例子的hello.pyif __name__ == "__main__":print ('This is main of module "world.py"')hello.sayHello()print(__name__)
执行结果:
first
This is main of module "world.py"
hello
hellofrom hello.sayhello()
__main__
可以看到hello.py中的第一行print('first')直接被执行了,并且hello.py中的__name__输出的也是hello,world.py中的name输出的是__main__
总结:要适应python没有main()方法的特点。所谓的入口其实也就是个if条件语句,判断成功就执行一些代码,失败就跳过。没有java等其他语言中那样会有特定的内置函数去识别main()方法入口,在main()方法中从上而下执行
转载请注明出处,谢谢
python中的“main()方法”相关推荐
- python中main方法的用法_Python中的main方法
估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看.但事实上python中是没有你理解中的"main()"方法的.言归正传 if name = ...
- 漫画:程序员太难了!为什么 Java 中的 main 方法必须是它?
作者 | 漫话编程 来源 | 漫话编程(ID:mhcoding) 在 Java 中,想必所有人都不会对 main 方法感到陌生,main 方法是 Java 应用程序的入口方法.程序运行时,要执行的第一 ...
- Python中sys.argv方法的一些典型用法
本文整理汇总了Python中sys.argv方法的典型用法代码示例. 示例1: weather_icons # 需要导入模块: import sys [as 别名] # 或者: from sys im ...
- Java中的main方法
2019独角兽企业重金招聘Python工程师标准>>> 在一个Java应用程序中,通常程序的入口是一个main方法,它被声明为公有静态方法,参数是一个字符串数组,返回值为Void类型 ...
- python中pylint使用方法(pylint代码检查)
一.Pylint 是什么 Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码. Pylint 是一个 Python 工具,除 ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
- Java中的main()方法详解
源文作者:leizhimin 源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...
- python使用方法-在Python中使用next()方法操作文件的教程
next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...
- python中range 10 0_如何在python中使用range方法
如何在python中使用range方法 发布时间:2021-01-05 16:55:23 来源:亿速云 阅读:94 作者:Leah 如何在python中使用range方法?很多新手对此不是很清楚,为了 ...
最新文章
- math 向上取整_自我说明:关于Math和File类的具体说明.
- build.gradle配置参数详解
- Nervos DAO锁定总额突破100亿,近日解锁的14.28亿生态基金已被全部存入
- hive 前7天标准差_为啥科目三考试前只让练7天?教练实话实说:这是为你们好...
- 8.2.3多态性 第8章 面向对象编程简介
- 周记(2016-6-27 -- 2016-7-3)
- SpringBoot 系列
- 微软宣布放弃收购雅虎
- ArcView GIS 应用与开发技术(13)-定制ArcView
- (转)清华学霸演讲稿:永远不要说你已经尽力了
- chrome分辨率测试工具
- 文件格式介绍:文本,图片,音频,视频
- dp算法求解矩阵连乘的问题
- 破解指纹打卡机 考勤机
- 网络广告中各种广告形式
- choco安装[win10包管理器]
- Pessimistic Locking ——悲观锁
- 用计算机弹发如雪,计算器弹音乐谱子
- 【概率论基础进阶】随机事件和概率-古典概型与伯努利概型
- ubuntu为软件设定图标