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

if test 多条件_1分钟让你读懂if __name__==#x27;__main__#x27;的含义,面试不用愁

相信很多学过Python的小伙伴在面试的时候都被技术面试官难倒过,今天给大家分享一道面试题详解,保证你花几分钟就能理解,从此面试不用愁。

f1c3b9c8370e5f34f0f61b66167417a8.png

if __name__ == '__main__':的作用

一个python文件通常有两种使用方法,第一是作为脚本直接执行第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在 if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。举例说明如下:

直接执行

在 test.py 中写入如下代码:

a81c624cd36ef0b8c658c56a4d4223dc.png

直接执行 test.py,结果如下图,可以成功 print 两行字符串。即,if __name__=="__main__": 语句之前和之后的代码都被执行

8bfa3e379d7c215e6fa94ef5a920220d.png

import 执行

然后在同一文件夹新建名称为 import_test.py 的脚本,输入如下代码:

f19ac05e11be3df82378054e9d25bf72.png

执行 import_test.py 脚本,输出结果如下:

406edd1b8489ee2d31f83f42afdf9944.png

只输出了第一行字符串。即,if __name__=="__main__": 之前的语句被执行,之后的没有被执行

if __name__ == '__main__':的运行原理

每个python模块(python文件,也就是此处的 test.py 和 import_test.py)都包含内置的变量 __name__,当该模块被直接执行的时候,__name__ 等于文件名(包含后缀 .py );如果该模块 import 到其他模块中,则该模块的 __name__ 等于模块名称(不包含后缀.py)

“__main__” 始终指当前执行模块的名称(包含后缀.py)。进而当模块被直接执行时,__name__ == 'main' 结果为真

为了进一步说明,我们在 test.py 脚本的 if __name__=="__main__": 之前加入 print(__name__),即将 __name__ 打印出来。文件内容和结果如下:

5c1043dcdbe34102466c30465ae35e6e.png

2abf967438e9cd3f80dafb26f3bc343f.png

可以看出,此时变量__name__的值为"__main__"。

再执行 import_test.py,执行结果如下:

06feab66b01d794f55dfdfcc0bc2059f.png

此时,test.py中的__name__变量值为 test,不满足 __name__=="__main__" 的条件,因此,无法执行其后的代码。

是不是很容易理解呢,其实编程的思维过程才是最重要的,逻辑理清了,代码不用去记也就能理解了。

0d874543b84549989d3101c8eb672b16.png

结尾

最后多说一句,小编是一个Python开发程序媛,我自己整理了一套基础学习兹料,想学习Python或者正在学习Python的小伙伴私信我“01”领取哦~

相关文章:

  • python打不开txt文件苹果怎么打开_如何在Mac上的Python中从TextEdit中打开文本文......
  • 如何使用python编程抢京东优惠券 知乎_小猿圈Python之实现京东秒杀功能代码
  • 预警系统一键自动升级程序_带有L2级自动驾驶技术,本田思域的起售价为11.99万...
  • python删除列表中的偶数_从奇数/偶数Python列表中删除偶数/奇数
  • ehcache使用_技术分享|浅谈EhCache实现页面缓存和数据缓存
  • elasticsearch date_史上最全的ElasticSearch系列之基础
  • python字符串函数参数_python:字符串常用函数
  • fabric白皮书_安全: Intel发布CSME安全白皮书
  • resnet50能用cpu跑吗_锐龙5000上市倒计时 官方告诉你哪些主板能用
  • web个人主页制作代码_Web前端开发是干嘛的?Web前端工资一般多少?
  • java动态代理_Java 动态代理及 RPC 框架介绍
  • 关于python的赋值说法_Python中tuple+=赋值的四个问题
  • python如何截取日期中的月份_python – 从给定日期开始提取日,月和年的...
  • python3 beautifulsoup_(转载) python3: beautifulsoup的使用
  • 为什么除零错会导致程序崩溃_Firefox 76.0.1紧急发布:修复导致部分扩展程序崩溃问题...
  • Codepen 每日精选(2018-3-25)
  • ES学习笔记(12)--Symbol
  • JavaScript 基础知识 - 入门篇(一)
  • nginx 负载服务器优化
  • Sass 快速入门教程
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 规范化安全开发 KOA 手脚架
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 爬虫模拟登陆 SegmentFault
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 为视图添加丝滑的水波纹
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 在Unity中实现一个简单的消息管理器
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​2020 年大前端技术趋势解读
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​如何防止网络攻击?
  • #Linux(权限管理)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • $.ajax中的eval及dataType
  • $.each()与$(selector).each()
  • (175)FPGA门控时钟技术
  • (2)STM32单片机上位机
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net 程序发生了一个不可捕获的异常
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .net6 webapi log4net完整配置使用流程
  • .Net多线程总结
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET企业级应用架构设计系列之开场白
  • .NET序列化 serializable,反序列化