当前位置:网站首页>ython中if __name__ == ‘__main__‘:的作用和原理
ython中if __name__ == ‘__main__‘:的作用和原理
2022-07-20 13:04:00 【Eden_mm】
参考:http://t.csdn.cn/lOBad
if name == ‘main’:的作用
一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if name == ‘main’: 的作用就是控制这两种情况执行代码的过程,在 if name == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。举例说明如下:
直接执行
直接执行 test.py,结果如下图,可以成功 print 两行字符串。即,if name"main": 语句之前和之后的代码都被执行。
import 执行
然后在同一文件夹新建名称为test2.py 的脚本,输入如下代码:执行
只输出了第一行字符串。即,if name"main": 之前的语句被执行,之后的没有被执行。
if name == ‘main’:的运行原理
每个python模块(python文件,也就是此处的 test.py 和 test2.py)都包含内置的变量 name,当该模块被直接执行的时候,name 等于文件名(包含后缀 .py );如果该模块 import 到其他模块中,则该模块的 name 等于模块名称(不包含后缀.py)。
而 “main” 始终指当前执行模块的名称(包含后缀.py)。进而当模块被直接执行时,name == ‘main’ 结果为真。
为了进一步说明,我们在 test.py 脚本的 if name==“main”: 之前加入 print(name),即将 name 打印出来。文件内容和结果如下:
可以看出,此时变量__name__的值为"main"。
执行import
此时,test.py中的__name__变量值为 test,不满足 name==“main” 的条件,因此,无法执行其后的代码。
边栏推荐
- 水调歌头·明月几时有
- Setting of XML parameter types in mybats
- Interprocess communication - shared memory shmat
- IOT standard system framework
- 除了定时器,真的没法在Simulation Node 类型的CAPL节点中实现延时了吗?
- 重组单克隆抗体丨ProSci CD154 抗体实例分析
- Download address of canoe, download and activation of can demo 16, and appendix of all canoe software versions
- 手撸第三人称角色控制器——Unity制作魂类游戏笔记 01
- 嵌入式中常见的存储器总结(一)存储器分类
- Cause and effect of memory alignment
猜你喜欢
How much do you know about the questions often asked by redis in Alibaba's interview?
华为摄像机布局
内存对齐的前因后果
ProSci 抗CD22抗体Epratuzum28流式细胞术展示
Solve the problem of function name conflict (dlopen, dlsym, dlclose)
Summary of common memory in embedded system (I) memory classification
手撸第三人称角色控制器——Unity制作魂类游戏笔记 01
Double shutter Technology
虞美人·寄公度
Google kicked off another "man grabbing war" for core making, and Intel's 17 year veteran joined it
随机推荐
CANoe不能自动识别串口号?那就封装个DLL让它必须行
docker清理缓存脚本怎么写
CAPL脚本中关于相对路径/绝对路径操作的几个傻傻分不清的内置函数
Characteristics and performance parameters of the sensor
传感器的特性及性能参数
点云格式读取和保存
Embedded development: 10 problems for successful code review
Limit the input type and length in the input box
【27. 表达式求值(中缀表达式)】
你怎么看CV-Transformer【秋招面经分享】
How to query and modify parameter status values
A strange problem in the running process of LoadRunner
HJ107 求解立方根
安全第二天课后练习
如何创作属于自己的NFT?
进程间通信-共享内存shmat
Google Earth Engine——1980-至今全球压力、温度、风等数据集
双快门技术
sql 盲注
你还觉得难吗?那就给盘活数据支个招