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

python“__main__“的解读

Tutorial
Gross tutorial
有些模块包含了仅供脚本使用的代码,比如解析命令行参数或从标准输入获取数据。 如果这样的模块被从不同的模块中导入,例如为了单元测试,脚本代码也会无意中执行。

这就是 if name == ‘main’ 代码块的用武之地。除非模块在顶层环境中(python 模块所在文件名.py)被执行,否则该块内的代码不会运行。

将尽可能少的语句放在位于 if name == ‘main’ 之下的代码块中可以提高代码的清晰度和准确度。 通常,将由一个名为 main 的函数来封装程序的主要行为:

简单来说,aaa.py中,if __name__ == '__main__'中的代码只在python aaa.py才会执行,
如果仅仅在其他bbb.py中import aaa,其中的代码不会执行。

echo.py

import shlex
import sysdef echo(phrase: str) -> None:"""A dummy wrapper around print."""# for demonstration purposes, you can imagine that there is some# valuable and reusable logic inside this functionprint(phrase)def main() -> int:"""Echo the input arguments to standard output"""phrase = shlex.join(sys.argv)echo(phrase)return 0if __name__ == '__main__':sys.exit(main())  # next section explains the use of sys.exit

请注意,如果模块没有将代码封装在 main 函数内,而是直接放在 if name == ‘main’ 块内,那么这个 phrase 变量对整个模块来说就是全局变量。 这很容易出错,因为模块内的其他函数可能会无意中使用全局变量而不是局部名称。 一个 main 函数解决了这个问题。

使用 main 函数有一个额外的好处,就是 echo 函数本身是孤立的,可以在其他地方导入。当 echo.py 被导入时,echo 和 main 函数将被定义,但它们都不会被调用,因为 name != ‘main’ 。

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

相关文章:

  • Linux Debian12使用podman安装pikachu靶场环境
  • 跑通并使用Yolo v5的源代码并进行训练—目标检测
  • 需求虽小但是问题很多,浅谈JavaScript导出excel文件
  • phar反序列化及绕过
  • 汽车IVI中控开发入门及进阶(三十):视频图像滚动问题分析(imx6+TVP5150+Camera)
  • 给PDF添加书签的通解-姜萍同款《偏微分方程》改造手记
  • 在寻找电子名片在线制作免费生成?5个软件帮助你快速制作电子名片
  • Github 2024-06-16 php开源项目日报 Top10
  • docker将容器打包提交为镜像,再打包成tar包
  • 洛阳水利乙级资质企业在水利科技创新中的作用
  • Redis-事务-基本操作-在执行阶段出错不会回滚
  • aws的alb,多个域名绑定多个网站实践
  • WPF/C#:数据绑定到方法
  • GBDT算法详解
  • 51单片机宏定义的例子
  • 香港云服务器怎么处理高并发和突发流量?
  • c,c++,qt从入门到地狱
  • iptables(6)扩展匹配条件--tcp-flags、icmp
  • C#-Json文件的读写
  • 【2023级研究生《人工智能》课程考试说明】
  • C语言队列操作及其安全问题
  • next.js v14 升级全步骤|迁移 pages Router 到 App Router
  • 如何在Ubuntu上安装WordPress
  • 处理导入Excel文件过大导致Zip bomb detected的问题
  • 【FFmpeg】AVIOContext结构体
  • Python控制结构
  • OpenCV--图形轮廓
  • MYSQL通过EXPLAIN关键字来分析SQL查询的执行计划,判断是否命中了索引
  • clean code-代码整洁之道 阅读笔记(第十二章)
  • FFmpeg YUV编码为H264