当前位置: 首页 > news >正文

【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()方法。

说到了python是逐行执行的,

所以当它读到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()方法中从上而下执行。

http://www.lryc.cn/news/20347.html

相关文章:

  • 公司对不同职级能力抽象要求的具体化
  • Java之MinIO存储桶和对象API使用
  • 如何用java实现同时进行多个请求,可以将它们并行执行,从而减少总共的请求时间。
  • 高端装备的AC主轴头结构
  • 【Proteus仿真】【51单片机】粮仓温湿度控制系统设计
  • 【LINUX】环境变量以及main函数的参数
  • 使用Pyparsing为嵌入式开发定义自己的脚本语言
  • C win32基础学习(二)
  • 理论五:控制反转、依赖反转、依赖注入,这三者有何区别和联系?
  • 读书笔记//《数据分析之道》
  • 1个串口用1根线实现多机半双工通信+开机控制电路
  • KUKA机器人外部自动运行模式的相关信号配置
  • 【RabbitMQ笔记02】消息队列RabbitMQ七种模式之最简单的模式
  • Spring MVC 源码- RequestToViewNameTranslator 组件
  • Linux--TCP编程--0216 17
  • 关于设计模式的记录
  • Lambda-常见的函数式接口
  • P1196 [NOI2002] 银河英雄传说 带权并查集
  • 【项目实战】快来入门Groovy的基础语法吧
  • Mybatis中的动态SQL
  • VUE常用API
  • 25 openEuler管理网络-使用nmcli命令配置ip
  • 如何安装和使用A-ops工具?
  • MySql数据库环境部署
  • 极品笔记,阿里P7爆款《K8s+Jenkins》技术笔记,职场必备
  • 数据结构:各种排序方法的综合比较
  • 【设计模式】 策略模式介绍及C代码实现
  • 【数据库】第二章 关系数据库
  • oracle和mysql的分页
  • 深拷贝与浅拷贝的理解