Python入门教学——if __name__==‘__main__‘:

1、简介

  • 对于很多编程语言来说,程序都必须要有一个入口,比如C 和 C++ 都需要有一个 main 函数来作为程序的入口,即程序的运行会从 main 函数开始。
  • 但和C,C++等有所不同的是,Python属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,python是动态的逐行解释运行,也就是从脚本第一行开始运行,没有统一的入口。
  • python文件有两种使用方法:
    • 直接作为脚本执行。
    • import到其他的python脚本中被调用执行,即作为模块(库)被导入执行。
  • 不管是直接运行还是导入,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。但实际使用过程中,python文件作为模块被其它python脚本调用执行的时候,有的代码我们是不希望被运行的。
  • if name=='main': 的作用就是定义这两种情况执行代码的执行方式,在该语句下的代码只有在文件作为脚本直接执行情况下才会被执行,而import到其他脚本中是不会被执行的。

2、举例

  • 我们编写两个模块代码,在demo1中编写add函数,并且调用。在demo2中引入add函数,并且调用。
  • 运行后demo2会发现,两个调用都被实现了,这并不是我们想要的结果。
  • 对demo1的代码进行修改。
    • ,将demo1中的函数调用添加到**if name=='main':**中。
  • 再次运行demo2,仅有demo2中的函数调用被实现。
    • 因为,demo1是被导入到其他的python脚本中运行的,所以**if name=='main':**下的代码块被执行。

3、原理

  • 每个python模块(单个python文件)都包含内置的变量__name__,当模块被直接执行时,__name__等于文件名**(包含后缀.py)** 。当模块import到其他脚本文件时,则__name__等于模块名称**(不包含后缀.py)** 。而**'main'等于当前执行文件的名称(包含了后缀.py)**。故当模块作为脚本文件直接执行时,name=='main'结果为真,所以后续代码可以继续执行。
  • 例如:
    • 在demo1.py中输出__name__,运行后可以看出变量__name__的值为'main'。
    • 再运行demo2,可以看到此时输出的变量__name__为demo1。
相关推荐
lifallen1 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研1 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi2 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
mit6.8242 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
人工智能·python
没有bug.的程序员2 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋2 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cui__OaO3 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
鱼鱼说测试3 小时前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
AntBlack3 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
艾莉丝努力练剑4 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法