估计很多人跟我一样初学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. math 向上取整_自我说明:关于Math和File类的具体说明.
  2. build.gradle配置参数详解
  3. Nervos DAO锁定总额突破100亿,近日解锁的14.28亿生态基金已被全部存入
  4. hive 前7天标准差_为啥科目三考试前只让练7天?教练实话实说:这是为你们好...
  5. 8.2.3多态性 第8章 面向对象编程简介
  6. 周记(2016-6-27 -- 2016-7-3)
  7. SpringBoot 系列
  8. 微软宣布放弃收购雅虎
  9. ArcView GIS 应用与开发技术(13)-定制ArcView
  10. (转)清华学霸演讲稿:永远不要说你已经尽力了
  11. chrome分辨率测试工具
  12. 文件格式介绍:文本,图片,音频,视频
  13. dp算法求解矩阵连乘的问题
  14. 破解指纹打卡机 考勤机
  15. 网络广告中各种广告形式
  16. choco安装[win10包管理器]
  17. Pessimistic Locking ——悲观锁
  18. 用计算机弹发如雪,计算器弹音乐谱子
  19. 【概率论基础进阶】随机事件和概率-古典概型与伯努利概型
  20. ubuntu为软件设定图标

热门文章

  1. 拆除工程计价的注意事项
  2. 抖音小店无货源——新手如何变成大佬?手把手带你成功
  3. 智能合约版抢购机器人测试
  4. ESP32+PlatformIO库开发--TFT_eSPI库例程解析(学习笔记1)
  5. IM69D130 MIC MEMS DIGITAL OMNI 95DB
  6. DIY--主板跳线接法
  7. vscode编辑器设置,禁止prettier/禁止Vetur自动格式化HTML代码
  8. 狼性创业:普通人创业失败最核心的根源是什么?
  9. 在使用Mathtype写公式的时候,怎么利用快捷键加粗变量,但不改变字体
  10. 【docker】基于docker快速部署个人lnmp业务环境