【Python基础】if __name__ == ‘__main__‘:和assert函数

news2024/11/20 2:28:38

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【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__' 来判断当前模块是否在主程序中执行。

主要的用途包括:

  1. 模块的测试:通过将测试代码放在if __name__ == '__main__' 的条件下,可以确保只有在直接运行模块时才会执行测试代码,而在被导入为模块时不会被执行。

  2. 执行模块的初始化操作:如果某些代码需要在模块被作为主程序执行时运行,可以将这些代码放在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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1046427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day49 jdbc技术

一、概述 什么是JDBC Java DataBase COnnectivity Java 数据库连接 其实就是利用Java程序连接并访问数据库的一种技术 为什么要学习JDBC 之前我们是通过终端,或者第三方工具直接连接数据库 在企业开发中,更多的是通过程序来连接数据库的 未来学习的M…

docker部署MinIO集群

docker部署MinIO集群 1 拉取镜像 docker pull minio/minio:RELEASE.2023-08-16T20-17-30Z 2 启动集群节点命令 注意:要对配置文件中使用到的文件夹进行授权 version: 3 # 公共操作 x-minio-common: &minio-commonimage: minio/minio:RELEASE.2023-08-16T20-17…

SpringCloud nacos1.x.x版本升级到2.2.3版本并开启鉴权踩坑

近期由于服务器漏洞扫描,检测出nacos存在绕过登录鉴权漏洞,如图 需要进行升级并开启鉴权,就此次升级做下记录。 1.首先备份原来的nacos,导出配置文件作为备份; 2,从官网下载nacos-server-2.2.3.zip&#x…

华为云云耀云服务器L实例评测 | 实例使用教学之简单使用:通过 Docker 容器化技术在华为云云耀云服务器快速构建网站

华为云云耀云服务器L实例评测 | 实例使用教学之简单使用:通过 Docker 容器化技术在华为云云耀云服务器快速构建网站 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器…

目标检测算法改进系列之Backbone替换为LSKNet

LSKNet Large Selective Kernel Network(LSKNet)可以动态地调整其大空间感受野,以更好地建模遥感场景中各种物体的测距的场景。据我们所知,这是首次在遥感物体检测领域探索大选择性卷积核机制的工作。在没有任何附加条件的情况下…

zemaxRKE广角目镜

在埃尔弗目镜的基础上,用一个消色差双胶合透镜取代了原本的双凸单透镜 半视场增加到35度 色差矫正很好 成本较低、生产工艺成熟 入瞳直径4mm波长0.51、0.56、0.61半视场35焦距28mm 镜头参数 效果: 成像光路:

内外监控软件科普:内网监控系统是什么?好用的内网监控系统有哪些?

随着互联网技术的快速发展,企业对于内部网络安全和信息保护的需求越来越高。内网监控系统作为一种有效的网络安全防护手段,可以帮助企业实现对内部网络的全面监控,确保数据安全和业务稳定。本文将从内网监控系统的定义、种类以及监控范围等方…

Verilog仿真文件中的阻塞和非阻塞赋值问题探讨

文章目录 测试验证RTL代码一、时钟初始值为1’b11.1、时钟用“”赋值&#xff0c;输入信号用“<”赋值(correct)1.2、时钟和输入信号都用“<”赋值(error)1.3、时钟和输入信号都用“”赋值(error)1.4、时钟用“<”赋值&#xff0c;输入信号用“”赋值(error) 二、时钟…

AI智能视频监控技术如何助力美好乡村建设?

随着城市化发展&#xff0c;很多乡村设施也在逐渐完善&#xff0c;智能监控也成了乡村发展必不可少的一环&#xff0c;智能视频监控应该在乡村建设里如何发挥作用呢&#xff1f; 1、有效提升安全意识 通过在乡村重要区域、公共场所、道路等设置智能视频监控设备&#xff0c;可…

【AI视野·今日Sound 声学论文速览 第十三期】Wed, 27 Sep 2023

AI视野今日CS.Sound 声学论文速览 Wed, 27 Sep 2023 Totally 1 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Synthias Melody: A Benchmark Framework for Unsupervised Domain Adaptation in Audio Authors Chia Hsin Lin, Charles Jones, Bj rn W…

day49数据库 索引 事务

一、索引 什么是索引&#xff1a;索引是数据库库中用来提高查询效率的技术&#xff0c;类似于目录 为什么要使用索引&#xff1a;如果不使用索引&#xff0c;数据会零散的保存在磁盘块中&#xff0c;查询数据需要遍历每一个磁盘块&#xff0c;直到找到数据为止&#xff0c;效率…

26056-2010 真空热压铍材 学习记录

声明 本文是学习GB-T 26056-2010 真空热压铍材. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了真空热压铍材的要求、试验方法、检验规则及标志、包装、贮存、运输、质量证明书、合 同(或订货单)等内容。 本标准适用于真空热压…

C++,STL

一、STL 一 、概念 底层和各自的效率。 vector&#xff1a;底层是数组&#xff0c;查询快&#xff0c;插入删除慢。 list: 底层是双向链表&#xff0c;查询慢&#xff0c;插入删除快。 都有长度&#xff0c;长度都可以变化,都使用对象调用size()得到&#xff0c; foreach遍历相…

Linux系统文件的三种time(atime/ctime/mtime)

使用Go操作文件&#xff0c;根据创建时间(或修改时间)进行不同处理。 在Mac上&#xff0c;文件相关的结构体字段在syscall/ztypes_darwin_arm64.go下的Stat_t: type Stat_t struct {Dev int32Mode uint16Nlink uint16Ino uint64Uid …

MySQL高级语句(第一部分)

MySQL高级语句(第一部分)一、MySQL进阶查询1、select ----显示表格中一个或数个字段的所有数据记录2、distinct ----不显示重复的数据记录3、where ----有条件查询4、and or ----且 或5、in ----显示已知的值的数据记录6、between ----显示两个值范围内的数据记录7、通配符8、l…

【PickerView案例10-国旗选择界面02 Objective-C预言】

一、好了,我们继续来实现这个国旗选择界面: 1.它的界面里面,是不是很简单,就一个UIPickerView,就完事儿了 然后,显示的每一行内容呢, 1)一个文字Label 2)一个图片 那大家应该有意识,它返回的应该是一个View,对吧, 代理方法里面,有一个返回View的,viewForRow…

AD360荣获2023 Fortress奖:卓越的身份验证和身份管理解决方案

Business Intelligence Group于5月31日宣布了2023年度Fortress奖的获奖名单。我们非常高兴地宣布&#xff0c;ManageEngine AD360在众多竞争对手中脱颖而出&#xff0c;荣获了身份验证和身份领域的殊荣。 Business Intelligence Group Fortress奖是网络安全领域的一项备受尊敬…

【无标题】verilog-hdl-farmat属于FPGA工程师的Verilog实用开发插件

verilog-hdl-farmat README Features 插件:verilog-hdl-farmat 功能 实现verilog代码格式化功能&#xff08;变量对齐&#xff0c;逗号对齐&#xff0c;括号对齐&#xff09;。功能触发&#xff1a;按下 ctrlshiftp :输入 verilog。 快捷键 CTRL L;一件例化功能,例化的代…

字节青训营 浅尝Type Script

Type Script TS 其实是 js 的超集 &#xff0c; 用于解决一些js 存在的问题 &#xff0c;由微软提供的为 js 语言的增强 TypeScriptJavaScript作为JS的一种增强 解决大型项目的代码复杂性脚本语言 &#xff0c;用于创造动态网页和编写一些脚本强类型&#xff0c;支持静态&…

详解如何在python中实现简单的app自动化框架

一、app自动化环境搭建 1、安装jdk及配置jdk的环境变量 app底层是c语言&#xff0c;应用层是java&#xff0c;所以需要jdk 2、安装SDK&#xff0c;配置android SDK环境 3、安装模拟器 4、下载安装Appium工具 01、appium客户端 appium destop 服务器 02、命令行安装&#…