【Python基础】if __name__ == ‘__main__‘:和assert函数
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处
文章目录
- if __name__ == '__main__':
- 简介
- 代码案例
- assert函数
- 简介
- 基本语法
- 代码案例
if name == ‘main’:
简介
if __name__ == '__main__':
在Python中,if __name__ == '__main__' 是一个常见的代码结构和惯用法。它用于确定当前模块是作为主程序执行,还是被导入为一个模块文件。
当一个Python脚本被执行时,解释器会将特殊变量__name__设置为'__main__'。因此,通过使用if __name__ == '__main__' 来判断当前模块是否在主程序中执行。
主要的用途包括:
-
模块的测试:通过将测试代码放在
if __name__ == '__main__'的条件下,可以确保只有在直接运行模块时才会执行测试代码,而在被导入为模块时不会被执行。 -
执行模块的初始化操作:如果某些代码需要在模块被作为主程序执行时运行,可以将这些代码放在
if __name__ == '__main__'的条件下。
简而言之,if __name__ == '__main__' 的使用可以让模块既可以作为独立的脚本运行,又可以作为其他模块的导入文件使用,提供了更灵活和可复用的代码组织方式。
代码案例
假设我们有两个文件:module1.py和module2.py。
首先,我们来看一下module1.py的内容:
# module1.py
def multiply(a, b):return a * b
if __name__ == '__main__':result = multiply(2, 3)print(f"The result is: {result}")
module1.py中定义了一个名为multiply的函数,用于计算两个数的乘积。在if name == ‘main’:这个条件下,我们调用了multiply函数,并输出结果。
接下来,我们来看一下module2.py的内容:
# module2.py
from module1 import multiply
result = multiply(4, 5)
print(f"The result is: {result}")
module2.py中导入了module1模块,并调用了multiply函数计算两个数的乘积,并将结果输出。
现在分别执行这两个模块看看结果:
当我们执行module1.py时,if name == ‘main’:条件成立,因为__name__的值为’main’。所以,multiply(2, 3)被调用,结果为6,并输出结果:“The result is: 6”。
当我们执行module2.py时,if __name__ == '__main__':条件不成立,因为__name__的值是"module1",而不是'__main__'。所以,multiply(4, 5)不会被调用。
总结一下:
- 当模块被直接执行时(作为主程序入口),__name__的值为’main’,执行if name == ‘main’:块中的代码。
- 当模块被导入时,
__name__的值为模块的名字,不等于'__main__',不执行if __name__ == '__main__':块中的代码。
通过使用if name == ‘main’:条件,我们可以在一个模块中编写测试代码或示例代码,保证只有当该模块作为主程序入口执行时,这些代码才会被执行。这样可以方便进行模块的测试和示例运行,而不影响模块作为其他模块的导入使用。
参考:https://blog.csdn.net/heqiang525/article/details/89879056
assert函数
简介
python assert的作用:assert函数用于程序调试
基本语法
1、The simple form:
assert expression
该形式用来测试断言的expression语句,如果expression是True,那么什么反应都没有。但是如果expression是False,那么会报错AssertionError,
2、assert断言语句可以添加异常参数,也就是在断言表达式后添加字符串信息,用来解释断言并更好的知道是哪里出了问题。格式如下:
assert expression [, arguments]
assert 表达式 [, 参数]
代码案例
当然!下面是一个简单的代码案例,展示了如何使用 assert 关键字:
def divide(x, y):assert y != 0, "除数不能为零"return x / y
# 测试除法函数
print(divide(10, 2)) # 输出: 5.0
print(divide(10, 0)) # 触发 AssertionError 异常
在上述代码中,我们定义了一个名为 divide 的函数,用于执行两个数字的除法运算。使用 assert 来确保除数 y 不为零,如果为零则触发断言异常,并且提示错误信息。
在打印 divide(10, 2) 的结果时,由于除数不为零,条件为真,所以程序继续执行,输出结果为 5.0。而当我们调用 divide(10, 0) 时,由于除数为零,条件为假,触发 AssertionError 异常,并输出错误信息 “除数不能为零”。
这个简单的例子展示了如何使用 assert 来确保代码执行时的条件满足预期,帮助开发者在调试和测试过程中快速捕捉潜在的问题。
参考:https://blog.csdn.net/TeFuirnever/article/details/88883859

相关文章:
【Python基础】if __name__ == ‘__main__‘:和assert函数
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
设计模式——1. 单例模式
原理 单例模式(Singleton Pattern)用于确保一个类只有一个实例,并提供一个全局访问点以访问该实例。这意味着无论在何处请求该类的实例,都将返回相同的唯一实例。单例模式常常用于需要共享资源,或需要限制某些资源在系统中的访问次数的情况下。 使用的场景 单例模式在许…...
操作文档的用户故事怎么写,敏捷开发
文章目录 操作文档的用户故事怎么写,敏捷开发例子的标准就是操作文档的角色是最终用户 操作文档的用户故事怎么写,敏捷开发 在敏捷开发中,用户故事(User Stories)是一种简洁、人性化的方式来描述功能需求。这通常有助…...
14.抽象工厂模式
UML 代码 #include <iostream> #include <list> using namespace std;class AbstractProductA { public:virtual void showa() 0; }; class ProductA1:public AbstractProductA { public:virtual void showa(){cout << "我是A1" << endl;}…...
铁路用热轧钢轨
声明 本文是学习GB-T 2585-2021 铁路用热轧钢轨. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了铁路用钢轨的订货内容、分类、尺寸、外形、质量及允许偏差、技术要求、试验方法、检 验规则、标志及质量证明书。 本标准适用于3…...
win11+wsl+git+cmake+x86gcc+armgcc+clangformat+vscode环境安装
一、安装wsl (1)打开power shell 并运行: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform (2࿰…...
HDLBits-Edgedetect
刚开始写的代码如下: module top_module (input clk,input [7:0] in,output [7:0] pedge );reg [7:0] in_pre;always (posedge clk)begin in_pre < in;endassign pedge in & ~in_pre; endmodule但是提交结果是错误的。猜想原因如下: assign p…...
云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!)
云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!) Linux搭建Hadoop集群(CentOS7hadoop3.2.0JDK1.8Mapreduce完全分布式集群) 本文章所用到的版本号: CentOS7 Hadoop3.2.0 JDK1.8 基本概念及重要性 很多小伙伴部署集群用hadoop用mapr…...
基于jenkins+k8s实现devops
1、背景 由于jenkins运行在k8s上能够更好的利用动态agent进行构建。所以写了个部署教程,亲测无坑 2、部署 1、创建ns kubectl create namespace devops 2、kubectl apply -f jenkins.yml apiVersion: v1 kind: ServiceAccount metadata:name: jenkinsnamespace…...
一文了解企业如何实现文件自动化实时同步
在当今的数字化时代,数据是企业的核心资产,也是企业竞争力的重要体现。数据的传输、共享、协作、备份等都需要依赖文件同步技术,实现数据在不同平台和设备之间的一致性和可用性。文件同步是指将一个或多个文件夹中的内容复制或更新到另一个或…...
低代码系统哪里好
低代码作为近些年来被热议的话题,一直备受争议。低代码的出现更多的是用来辅助那些没有太多技能的人士而使用,在某些方面依然需要强大的代码来解决生产革新。所以低代码也不是浑水猛兽,也需要根据实际情况加以利用。那么为什么低代码会收到如…...
C#WPF通知更改公共类使用实例
本文实例演示C#WPF通知更改公共类使用实例,通过使用公共类简化了代码。其中的代码中也实现了命令的用法。 定义: INotifyPropertyChanged 接口:用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。 首先创建WPF项目,添加按钮和文本控件 <Window x:C…...
解决高并发问题
在处理项目中的高并发问题时,可以采取以下几种方法: 后端处理:大部分的高并发处理是在后端进行的。可以通过优化数据库查询、增加缓存机制(如集成Redis)、使用分布式技术(如分布式缓存、分布式锁ÿ…...
B+树的定义以及查找
1.B树的定义 一棵m阶的B树需满足下列条件: 每个分支结点最多有m棵子树(孩子结点)。非叶根结点至少有两棵子树,其他每个分支结点至少有「m/2]棵子树。结点的子树个数与关键字个数相等。所有叶结点包含全部关键字及指向相应记录的指针,叶结点中将关键字按…...
InputAction的使用
感觉Unity中InputAction的使用,步步都是坑。 需求点介绍 当用户长按0.5s 键盘X或者VR left controller primaryButton (即X键)时,显示下一个图片。 步骤总览 创建InputAction资产将该InputAction资产绑定到某个GameObject上在对应的script中…...
Bug排查思路
遇到一个Bug,怎么排查?以下几个思路,希望能对大家有所启发 一、环境问题 1、开发的代码是否已更新 2、是否是缓存原因导致的(强刷,手动清除缓存,web甚至可以直接用无恒模式查看页面) 3、是否…...
独立站引流,如何在Reddit进行营销推广?
Reddit是目前最被忽视却最具潜力的社交媒体营销平台之一,它相当于国内的百度贴吧,是美国最大的论坛,也是美国第五大网站,流量仅次于Google、Youtube、Facebook以及亚马逊。 如果会玩,Reddit也可以跟其他的社交媒体营销…...
文件拖拽上传功能已经烂大街了,你还不会吗?
说在前面 🖼文件拖拽上传功能现在已经随处可见,大家应该都用过了吧,那么它具体是怎么实现的大家有去了解过吗?今天我们一起来实现一下这个功能,并封装一个拖拽上传组件吧。 效果展示 体验地址:http://jyeon…...
TCP与UDP协议详解!!!
TCP/IP运输层中的两个重要协议 TCP的报文结构 TCP的流量控制 流量控制:让发送方发送速率不要太快,TCP协议使用滑动窗口实现流量控制。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 TCP接收方利用自己的接收窗口的大小来限制发送…...
《C++ primer》练习6.36-6.38:书写返回数组引用的函数声明
最近看C primer,看到《C primer》6.3.3练习,要求书写返回数组引用的函数声明,觉得有必要实践记录一下。 这里先总结返回数组的引用的的函数声明写法(下面的Type是数组元素的类型,可以是int、float等,如果要…...
LongCat-Image-Editn效果展示:建筑效果图‘添加中文标牌+调整光照’案例
LongCat-Image-Edit效果展示:建筑效果图‘添加中文标牌调整光照’案例 1. 开篇:当AI学会“装修”建筑效果图 想象一下,你手里有一张刚出炉的建筑效果图,客户突然提出两个新需求:“能不能给大楼加上我们公司的中文招牌…...
YOLOFuse镜像亮点解析:环境零配置与多种融合策略详解
YOLOFuse镜像亮点解析:环境零配置与多种融合策略详解 1. 引言:多模态检测的工程挑战 在智能安防和自动驾驶领域,工程师们经常面临一个现实问题:白天表现优秀的目标检测系统,到了夜间或恶劣天气环境下性能急剧下降。传…...
Tomcat安全防护指南:如何防御CVE-2017-12615和CNVD-2020-10487漏洞攻击
Tomcat安全防护实战:从漏洞原理到企业级防御体系构建 最近在帮某金融客户做安全审计时,发现他们的Tomcat服务器竟然还开着AJP端口,而且管理后台用的还是默认密码。这让我想起去年处理过的一次安全事件——攻击者仅用3小时就通过CVE-2017-1261…...
明略科技公布上市后首次年报:营收14亿 经调整净利4204万
雷递网 雷建平 3月26日明略科技(股份代码:2718)今日发布截至2025年12月31日财报,财报显示,明略科技2025年营收14.26亿,较上年同期的13.81亿增长3.2%。明略科技2025年来自数据智能服务收入为12.6亿元&#x…...
别再手动开FDTD了!用Matlab这行代码一键启动Lumerical 2022(附完整配置流程)
用Matlab自动化操控Lumerical FDTD的工程实践指南 在光学仿真领域,Lumerical FDTD Solutions是纳米光子器件设计的黄金标准工具,而Matlab则是算法开发和数据分析的利器。传统工作流中,工程师需要在这两个软件间反复切换、手动操作,…...
Docker+宝塔双方案:Nextcloud私有云盘从入门到企业级部署全攻略
Nextcloud企业级私有云部署双轨方案:Docker敏捷开发与宝塔生产环境实战指南 在数字化转型浪潮中,企业数据主权意识正在觉醒。Nextcloud作为开源的私有云解决方案,不仅提供了媲美商业云盘的功能体验,更让组织完全掌控数据流向。本文…...
视频换脸功能上线!AI黑科技助力内容创作降本90%
在电商圈摸爬滚打十几年,从国内淘宝京东到亚马逊TikTok,操盘过美妆、服饰、3C多个类目的百万级店铺。这十年最深的体会就是:流量越来越贵,内容越来越卷,成本越来越高。 尤其是短视频赛道。一条带货视频,模…...
终极指南:如何让AMD和Intel显卡也能享受DLSS级别的AI超分辨率技术
终极指南:如何让AMD和Intel显卡也能享受DLSS级别的AI超分辨率技术 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler Opti…...
OpenClaw 的检索增强中,向量数据库的索引类型(HNSW、IVF)如何选择?
在讨论时序推理时,OpenClaw 对时间关系的建模方式,其实可以从一个很直观的角度去理解——它并不只是简单地给事件贴上时间标签,而是尝试去捕捉事件之间那种动态的、有时甚至是隐含的依赖关系。 想象一下日常生活中整理相册的过程。如果只是按…...
Wan2.1-UMT5开发环境搭建:Node.js后端服务与前端交互配置
Wan2.1-UMT5开发环境搭建:Node.js后端服务与前端交互配置 如果你正在折腾Wan2.1-UMT5的WebUI,想自己搞点后端服务,或者想扩展它的功能,比如加个状态查询、做个回调通知,那你来对地方了。很多朋友卡在环境配置这一步&a…...
