估计很多人跟我一样初学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()方法”相关推荐

  1. python中main方法的用法_Python中的main方法

    估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看.但事实上python中是没有你理解中的"main()"方法的.言归正传 if name = ...

  2. 漫画:程序员太难了!为什么 Java 中的 main 方法必须是它?

    作者 | 漫话编程 来源 | 漫话编程(ID:mhcoding) 在 Java 中,想必所有人都不会对 main 方法感到陌生,main 方法是 Java 应用程序的入口方法.程序运行时,要执行的第一 ...

  3. Python中sys.argv方法的一些典型用法

    本文整理汇总了Python中sys.argv方法的典型用法代码示例. 示例1: weather_icons # 需要导入模块: import sys [as 别名] # 或者: from sys im ...

  4. Java中的main方法

    2019独角兽企业重金招聘Python工程师标准>>> 在一个Java应用程序中,通常程序的入口是一个main方法,它被声明为公有静态方法,参数是一个字符串数组,返回值为Void类型 ...

  5. python中pylint使用方法(pylint代码检查)

    一.Pylint 是什么 Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码. Pylint 是一个 Python 工具,除 ...

  6. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  7. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  8. python使用方法-在Python中使用next()方法操作文件的教程

    next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...

  9. python中range 10 0_如何在python中使用range方法

    如何在python中使用range方法 发布时间:2021-01-05 16:55:23 来源:亿速云 阅读:94 作者:Leah 如何在python中使用range方法?很多新手对此不是很清楚,为了 ...

最新文章

  1. laravel5 MAC is invalid
  2. 小晶粒zsm分子筛合成表征实验报告_Nat. Mater.:区域选择性合成亚纳米金属-分子筛材料...
  3. 斗鱼关注人数爬取 | 字体反爬的攻与防
  4. [Bug]由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值的解决方法(转)...
  5. 超大数据下大批量随机键值的查询优化方案 1
  6. python函数做菜单_PYTHON图形化操作界面的编程七__创建菜单
  7. 【论文阅读】JDA(joint distribution adaptation)/2013初稿
  8. 2021年中国低地球轨道卫星(LEO)发射服务市场趋势报告、技术动态创新及2027年市场预测
  9. 《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(10)--- 接受器 - 连接器...
  10. H盘提示拒绝访问资料怎么寻回
  11. Ubuntu下mysql可视化_ubuntu上mysql有可视化界面吗 ubuntu mysql 图形界面
  12. Adobe Flash Builder 四 序列号
  13. oracle xdb xquery,XML DB与XDB是同一个东西吗?
  14. swiper设置autoplay不起作用
  15. java中的subtract_【java】Java.math.BigDecimal.subtract()方法实例
  16. bzGhost打造跨平台即时聊天软件之专栏介绍
  17. 转自一个计算机毕业生的求职经验
  18. GIS+=地理信息+行业+大数据——纽约公开11亿条出租车和Uber原始数据下载及分析...
  19. unity新粒子系统的碰撞和触发
  20. win10 系统创建环回接口步骤

热门文章

  1. 中国噪音计市场趋势报告、技术动态创新及市场预测
  2. jQuery中Input属性checkBox用removeAttr后无效的陷阱
  3. USB耳机方案,网吧游戏耳机方案,Gaming耳机方案,7.1声道耳机方案
  4. 服务器响应307,ios - 调用307重定向服务器时的401响应 - 堆栈内存溢出
  5. Android6.0 源码增加黑名单功能
  6. Typora使用全面教程
  7. 为华生物关于试剂马来酰亚胺-聚乙二醇-聚(D,L-丙交酯-co-乙交酯)PLGA-PEG-Mal的说明
  8. python 扯线木偶_GitHub - huma008/puppet: 简单的股票程序化交易系统。核心模块基于同花顺和通达信金融终端。用户交流群:624585416...
  9. 最后100天考研复习计划
  10. 360搜索彩蛋自动化开发实践