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

python编程不良习惯纠正: 慎用顶层代码

这几天在跑一个开源代码时,发现,通过pdb断点不起作用,经过一番检查,发现代码运行时甚至没有进入main函数,就开始一顿操作. 然后定位到是在执行"import"操作的时候发生了冗余操作.

经过进一步的检查发现,是下列代码发生了冗余操作,而这一行代码的含义是: 从show.py 中引入show() 函数.

from show import show

而实际上,show.py中有大量顶层代码,如下图. 可以想象,可能是开发者在代码开发时基于show()函数进行了很多调试,

print("Hi")
print("Hi")
print("Hi")
print("Hi")
print("Hi")
print("Hi")def show():

而当其他文件调用该模块时,即使是from show import show, show.py中的顶层内容也会被全部调用。

从开发者的角度,当时这样的操作,没有造成明显的问题,但是作为使用者,这样的写法会造成对于程序的理解和执行很大的干扰,因此,我们还是建议将每个模块的可执行部分,避免全局变量和和顶层代码,将模块的调试部分封装到模块的main函数中,如下

def show():print("show function")def main():show()print("Hi")print("Hi")print("Hi")print("Hi")print("Hi")print("Hi")if __file__ == "__main__":main()

相关文章:

python编程不良习惯纠正: 慎用顶层代码

这几天在跑一个开源代码时,发现,通过pdb断点不起作用,经过一番检查,发现代码运行时甚至没有进入main函数,就开始一顿操作. 然后定位到是在执行"import"操作的时候发生了冗余操作. 经过进一步的检查发现,是下…...

Simulate Ring Resonator in INTERCONNECT

Simulate Ring Resonator in INTERCONNECT 正文正文 首先,我们采用 Interconnect 模块的工作流程 一文中介绍的方法添加一个直波导器件。接着,我们需要对它的名称进行更改,此时我们看左侧 Property View - Root Element 中的 General 属性,我们发现 name 属性是灰色的,无…...

Flutter 中的 DrawerController 小部件:全面指南

Flutter 中的 DrawerController 小部件:全面指南 Flutter 是一个流行的跨平台移动应用开发框架,它提供了丰富的组件和工具来帮助开发者构建高质量的应用。在Flutter中,DrawerController并不是一个内置的组件,但是它的概念可以用于…...

Flutter 中的 ImageFiltered 小部件:全面指南

Flutter 中的 ImageFiltered 小部件:全面指南 在Flutter中,ImageFiltered是一个功能强大的小部件,它允许你对图片应用各种图像处理效果,如模糊、颜色转换、对比度调整等。通过ImageFiltered,你可以为应用添加丰富的视…...

C++第二十弹---深入理解STL中vector的使用

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、vector的介绍 2、vector的使用 2.1、构造函数和赋值重载 2.1.1、构造函数的介绍 2.1.2、代码演示 2.2、容量操作 2.3、遍历 2.4、增删…...

【赠书第24期】Java项目开发实战(微视频版)

文章目录 前言 1 项目选择与需求分析 1.1 项目选择 1.2 需求分析 2 系统设计 2.1 系统架构设计 2.2 数据库设计 2.3 接口设计 3 编码实现 3.1 环境搭建 3.2 编码规范 3.3 编码实现 4 测试与部署 4.1 单元测试 4.2 系统测试 4.3 部署与上线 5 总结与展望 6 推…...

多波段光源 通过8种波长实现的成像解决方案

光源在机器视觉中的重要性不容小觑,它直接影响到图像的质量,进而影响整个系统的性能。光源的作用包括提供足够的照明,并确保被摄物体的特征能够被准确地捕捉到图像中,使被检测物体产生清晰的图像,提高图像的对比度和亮…...

【Python】 如何从日期中减去一天?

基本原理 在编程中,日期和时间的处理是一个常见的需求,尤其是在处理日志、调度任务、数据分析等场景中。Python 提供了多种方式来处理日期和时间,其中最常用的库是 datetime。datetime 模块包含了日期(date)、时间&am…...

【MySQL精通之路】SQL优化(1)-查询优化(10)-外部联接简化

主博客: 【MySQL精通之路】SQL优化(1)-查询优化-CSDN博客 上一篇: 【MySQL精通之路】SQL优化(1)-查询优化(9)-外部联接优化-CSDN博客 下一篇: 【MySQL精通之路】SQL优化(1)-查询优化(11)-多范围查询优化-CSDN博客 查询时FROM子句中的表达…...

SCT2360:4V-28v Vin,6A同步降压DCDC转换器与EMI减少

特点: 宽4V-28V输入电压范围 0.6V14V输出电压范围 6A连续输出电流 HS/LS电源的集成式36m2/18m2 Rdson MOSFET 固定1 ms软启动时间 可选择的400KHz,800KHz,1.2MHz开关频率 可选择的PWM、PFM和USM操作模式 逐周期电流限制 输出过电压保护 超温保…...

企微运营SOP:构建高效、规范的运营流程

随着企业微信在企业内部沟通协作中的广泛应用,如何构建一套高效、规范的企微运营流程成为了众多企业关注的焦点。本文将详细探讨企微运营SOP(Standard Operating Procedure,标准操作程序)的重要性、构建方法以及实施效果&#xff…...

<商务世界>《76 微课堂<茶叶(2)-种类>》

1 茶叶总共分为6个大类 六大茶类分类法:红茶、绿茶、青茶、黄茶、黑茶、白茶六大茶类 2 红茶 红茶具有红茶、红汤、红叶和香甜味醇的特征。以水冲泡,不仅香气迎人,还呈现出特有的深红茶色,因此被人称为“红茶”。 分布地区&…...

安卓Bug总结

为什么写这篇文章 安卓十年开发遇到过得Bug做一个总结,大同小异,总结教训。 这里存放BUG目录列表 文章列表内容关键字Gradle常见问题及总结包括以下问题:gradle插件与gradle home版本关系错误、Gradle下载太慢、Executionfailed forJetifyTr…...

基于小波分析和机器学习(SVM,KNN,NB,MLP)的癫痫脑电图检测(MATLAB环境)

癫痫是一种由大脑神经元突发性异常放电导致的大脑功能性障碍疾病。据世界卫生组织统计,全球约有7000万人患有癫痫。癫痫患者在发病时呈现肌肉抽搐、呼吸困难、意识丧失等症状。由于癫痫发作的偶然性,患者极有可能在高空、驾驶、游泳等危险情况下发病并丧…...

python数据分析:爬取某东商城商品评论数据并做词云展示(含完整源码及详细注解)

python数据分析,爬取某东商城商品评论数据并做词云展示。 一、明确爬取的网页及结构 找到要爬取的网页地址,发现有一个获取json格式评论数据的接口: url = "https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=217…...

当HR问你是否单身时,该怎么回答?

知识星球(星球名:芯片制造与封测技术社区,星球号:63559049)里的学员问:我是晶圆厂厂务工程师,最近在面试新工作,但是几乎每家HR都会问我同一个问题:你结婚没有&#xff1…...

大数据开发面试题【Spark篇】

115、Spark的任务执行流程 driver和executor,结构式一主多从模式, driver:spark的驱动节点,用于执行spark任务中的main方法,负责实际代码的执行工作;主要负责:将代码逻辑转换为任务、在executo…...

深入分析 Android Activity (六)

文章目录 深入分析 Android Activity (六)1. Activity 的权限管理1.1 在 Manifest 文件中声明权限1.2 运行时请求权限1.3 处理权限请求结果1.4 处理权限的最佳实践 2. Activity 的数据传递2.1 使用 Intent 传递数据2.2 使用 Bundle 传递复杂数据 3. Activity 的动画和过渡效果3…...

火箭升空AR虚拟三维仿真演示满足客户的多样化场景需求

在航空工业的协同研发领域,航空AR工业装配系统公司凭借前沿的AR增强现实技术,正引领一场革新。通过将虚拟信息无缝融入实际环境中,我们为工程师、设计师和技术专家提供了前所未有的共享和审查三维模型的能力,极大地提升了研发效率…...

LeetCode 279 —— 完全平方数

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 此图利用动态规划进行求解,首先,我们求出小于 n n n 的所有完全平方数,存放在数组 squareNums 中。 定义 dp[n] 为和为 n n n 的完全平方数的最小数量,那么有状态…...

如何用AD8232构建你的第一个专业级心电监测系统:从零到一的完整指南

如何用AD8232构建你的第一个专业级心电监测系统:从零到一的完整指南 【免费下载链接】AD8232_Heart_Rate_Monitor AD8232 Heart Rate Monitor 项目地址: https://gitcode.com/gh_mirrors/ad/AD8232_Heart_Rate_Monitor 想要亲手打造一个专业级的心电监测设备…...

Python安全自动化:构建可落地的渗透测试工作流

1. 这不是炫技工具箱,而是一套可落地的安全工作流“黑客的‘瑞士军刀’”这个说法在安全圈里被用滥了——很多人一听到就想到Kali Linux里那堆图标花哨、命令冗长、跑起来动不动就报错的GUI工具。但真正干过渗透测试的人心里都清楚:能稳定复现、可嵌入流…...

AI动态简报之算力基建篇(2026.05.24)

关注方向:大模型 GPU算力 AI芯片 云计算 大模型API⚡ 第1条:全球九大云厂商资本支出上调至8300亿美元,年增79%核心信息:TrendForce集邦咨询最新报告将2026年全球九大CSP(谷歌、AWS、Meta、微软、甲骨文、字节跳动、…...

N_m3u8DL-RE深度解析:现代流媒体下载引擎的架构设计与实战应用

N_m3u8DL-RE深度解析:现代流媒体下载引擎的架构设计与实战应用 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8…...

Cursor破解工具终极指南:5步实现AI编程助手永久免费使用

Cursor破解工具终极指南:5步实现AI编程助手永久免费使用 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your t…...

达梦数据库-数据库主备集群更改实例目录及相关目录步骤-记录总结

1达梦数据库-数据库主备集群更改实例目录及相关目录步骤-记录总结 1.1常见需求 当前数据库实例所在磁盘性能较差或空间不足,需格式化性能较好空间足的新磁盘并挂载,挂载到原目录或者新目录,然后把数据库实例目录移动到新磁盘。 1.2流程步骤…...

面试官最爱问的“反转字符串”,为什么能看出你是不是高手?

面试官最爱问的“反转字符串”,为什么能看出你是不是高手? 很多人第一次看到“反转字符串(Reverse String)”这道题时,都会有一种感觉: 就这? 不就是把 "hello" 变成 "olleh" 吗? 结果真正面试时。 有人写了 3 行。 有人写了 30 行。 还有人直…...

Win11Debloat:Windows系统终极清理与优化完全指南

Win11Debloat:Windows系统终极清理与优化完全指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and custom…...

打造你的专属Minecraft体验:NightX Client深度解析与实用指南

打造你的专属Minecraft体验:NightX Client深度解析与实用指南 【免费下载链接】NightX-Client Minecraft Forge 1.8.9 hacked client, Based on LiquidBounce 项目地址: https://gitcode.com/gh_mirrors/ni/NightX-Client 你是否曾想过在Minecraft中拥有超越…...

OpenClaw用户指南通过Taotoken CLI快速写入配置并开始使用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 OpenClaw用户指南:通过Taotoken CLI快速写入配置并开始使用 对于使用OpenClaw构建智能体工作流的开发者而言&#xff0…...