python中if__name__=='__main__'_python中的if __name__=='__main__': main()解析

2023-11-02

python中我们会看到一段代码是这样的:

1 if __name__=='__main__':

2 main()

这段代码的什么意思,我们可以知道代码的意思是如果__name__=='main'为Ture,则调用main()函数

有句话经典的概括了这段代码的意义:

“Make a script both importable and executable”

意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。

name__的值是什么?模块是对象,并且所有的模块都有一个内置属性 name。一个模块的 name 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, name 的值将是一个特别缺省"main"。

我们用例子说明:

1 #module.py

2 def main():

3 print "we are in %s"%__name__

4 if __name__ == '__main__':

5 main()

这个模块定义了一个main()函数,运行的结果是打印出”we are in main“,说明我们代码模块中的main()函数被调用执行了,有个if这段代码,该模块可以自己执行了,并且__name__=='main'

但是如果我们从另我一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?

1 #anothermodle.py

2 from module import main

3 main()

其执行的结果是:we are in module

说明此时我们的__name__=='module',也就是main()所在模块的模块文件名

这样既可以让“模块”文件运行,也可以被其他模块引入,这才是关键。

总结:

(1)如果我们是直接执行某个.py文件的时候,该文件中那么”name == 'main'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,并且调用这个文件中的函数时,这是函数里面__name__的值就是我们这个py文件的名字而不是__main__。

有了这段代码:

1 if __name__ == '__main__':

2 ‘调试代码’

(2)这个功能还有一个用处:调试代码的时候,在”if name == 'main'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中if__name__=='__main__'_python中的if __name__=='__main__': main()解析 的相关文章

随机推荐

  • 编译原理LR(1)语法分析器 C++实现

    LR 1 语法分析器 C 语言编写 已通过VS2019调试 文章目录 LR 1 语法分析器 一 测试结果 二 测试文件 三 核心代码 四 完整代码 感谢阅读 如有错误 恳请指正 一 测试结果 二 测试文件 在D盘下建立test txt和to
  • 【实践篇】DDD脚手架及编码规范

    一 背景介绍 我们团队一直在持续推进业务系统的体系化治理工作 在这个过程中我们沉淀了自己的DDD脚手架项目 脚手架项目是体系化治理过程中比较重要的一环 它的作用有两点 1 可以对新建的项目进行统一的规范 2 对于指导老项目进行DDD的改造提
  • [答疑]同事认为应该先画序列图,强烈反对先画类图

    DDD领域驱动设计批评文集 软件方法建模师 不再考查基础题 软件方法 各章合集 匿 2023 8 28 17 19 团队分享会 我和同事分享了学习软件方法下的心得 我说根据需求规格说明书画出类图 再画时序图添加类的方法 有一个高开就说应该先
  • linux中的shell及不同的shell种类的区别

    1 Linux中的shell介绍 用户登录到Linux系统后 系统将启动一个用户shell 在这个shell中 可以使用shell命令或声明变量 也可以创建并运行shell脚本程序 运行shell脚本程序时 系统将创建一个子shell 此时
  • 全球及中国智能家居市场十四五竞争形势及营销模式咨询报告2021-2027年

    全球及中国智能家居市场十四五竞争形势及营销模式咨询报告2021 2027年 HS HS HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年10月 搜索鸿晟信合研究院查看官网更多内容 第一章 智能家居
  • Android下使用Gson fromJson数据总是返回null

    Gson的使用相当简单 可以在json和java对象之间很方便的做转换 特别是依赖GsonFormat 工具 可以自动生成POJO的Bean 类 使用方法网上介绍很多 就不再熬述 最近在Android client端对接某开源平台 通过Re
  • 豆瓣图书统计可视化分析

    s此博客是建立于爬虫基础之上 首先我们需要对豆瓣网站的图书进行爬取 这里将不再展示爬取部分 直接进行数据清洗及可视化分析部分 一 准备数据集 数据集在下方链接当中 如需请自取 https pan baidu com s 146N5YQfE0
  • games103,作业1(逻辑梳理)

    理论相关部分可以参照刚体动力学 作业框架已知条件 兔子模型的顶点集 每个墙体的上的点P及法线N 兔子初始速度 角速度w 线速度v 全局速度衰减系数 linear decay angular decay 全局弹性系数 restitution
  • RT-DETR:《DETRs Beat YOLOs on Real-time Object Detection》

    概述 基于Transformer的端到端检测器 DETR 的高计算成本问题尚未得到有效解决 这限制了它们的实际应用 并使它们无法充分利用无后处理的好处 如非最大值抑制 NMS 本文首先分析了现代实时目标检测器中NMS对推理速度的影响 并建立
  • 如何拼接SQL语句,以及如何防止SQL注入攻击

    在书写SQL语句 或者其他语句 的过程中 有时需要将形参放入准备好的SQL变量中 就需要对语句进行拼接 拼接方法如下 字符串需要整个用双引号包裹 形参需要暴漏在双引号外面 字符串跟形参之间用加号连接 下面对这个SQL语句进行分组分析 正常的
  • 机器学习-数据挖掘中常用的数据清洗方法

    转自 https blog csdn net jiazericky article details 80322225 在数据挖掘过程中 数据清洗主要根据探索性分析后得到的一些结论入手 然后主要对四类异常数据进行处理 分别是缺失值 missi
  • Spring事务之7种传播行为

    文章目录 一 什么是事务传播行为 二 7大传播行为 详细分析下 1 PROPAGATION REQUIRED 2 PROPAGATION SUPPORTS 3 PROPAGATION MANDATORY 4 PROPAGATION REQU
  • QMap遍历(修改)

    QMap遍历 修改 QMap遍历 修改 方法一 STL风格的遍历器 个人较常用 直观易读 方便修改值 QMap
  • springcloud gateway 连接保活问题

    项目中使用了springcloud gateway作为网关 上游与负载均衡服务器连接 近期通过监控系统观察 发现网关与上游负载均衡服务器保持的TCP连接有300 初步怀疑是调用方未释放连接 用如下方法进行分析 1 周期性采集当前建立的连接及
  • C语言提高篇(wchar_t)字符类型

    概述 原来C语言也阔以这么秀 来自于灵感的编程思想 在很多大型项目上见过类似的写法 所以今天写个Demo 记录一下 方便以后赏阅 IDE vscode 1 源码 define ARRAY SIZE array sizeof array si
  • 数据结构与算法导读

    之前学过许多千奇百怪的算法 但是许多其实并没有真正动手码过代码 因此我希望能够在接下来的六个月里 把我学过的大部分算法码一遍 巩固基础知识 提高码题技巧 如果还有精力 我会尝试把一些算法竞赛题写在博客里 让大家感受一下基本算法求解复杂问题同
  • python基础----09-----类、对象、魔法方法、封装、继承、类型注解、多态、数据分析案例

    一 初识对象 说白了就是类的实例化 类是一个抽象层的定义 例如下面class Student就是定义的一个类 它是抽象层 然后stu 1 Student 我们根据类创建了一个对象 就是对类的实例化 这个实例化对象我们是可以操作的 if na
  • ElasticSearch自定义评分-看这篇就够了

    文章目录 一 适用的场景 1 基本介绍 2 使用场景 2 1根据价格评分排序 2 2根据距离评分排序 2 3根据距离价格综合评分排序 2 4自定义编写脚本 二 常用的字段解释 1 整体结构 2 function score 2 1 quer
  • [leetcode 周赛 148] 1145 二叉树着色游戏

    目录 1145 Binary Tree Coloring Game 二叉树着色游戏 描述 思路 代码实现 1145 Binary Tree Coloring Game 二叉树着色游戏 描述 有两位极客玩家参与了一场 二叉树着色 的游戏 游戏
  • python中if__name__=='__main__'_python中的if __name__=='__main__': main()解析

    python中我们会看到一段代码是这样的 1 if name main 2 main 这段代码的什么意思 我们可以知道代码的意思是如果 name main 为Ture 则调用main 函数 有句话经典的概括了这段代码的意义 Make a s