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

Python-if __name__ == ‘__main__‘和collections.Mapping的用法

1.if __name__ == '__main__'

1.1解释

if __name__ == '__main__': 是 Python 中的一个常见惯用法,用于确定一个 Python 脚本是被直接运行还是被导入为模块使用。

在 Python 中,每个模块都有一个特殊的内置变量 __name__,该变量的值决定了模块的运行方式。具体来说:

  • 如果一个 Python 脚本是被直接执行的(即通过命令行或脚本编辑器运行),那么 __name__ 的值将会是字符串 '__main__'
  • 如果一个 Python 脚本是被导入为一个模块到其他脚本中使用的,那么 __name__ 的值将是该脚本的模块名。

因此,if __name__ == '__main__': 的作用是检查当前脚本是否是被直接运行的。只有当脚本被直接运行时,才会执行 if 语句块中的代码,这通常包含了脚本的主要逻辑。

这个惯用法非常有用,因为它允许编写可重用的模块,其中包含了一些功能,但只有在模块被直接执行时才会运行。当模块被导入到其他脚本中时,通常是希望避免执行模块中的主要逻辑,而只是定义和提供函数、类等。

1.2示例

例如,考虑一个名为 my_module.py 的模块:

def my_function():print("This is my function.")if __name__ == '__main__':print("This is the main part of my_module.")my_function()

如果你直接运行 my_module.py,将输出:

This is the main part of my_module.
This is my function.

但如果将 my_module.py 导入到另一个脚本中,例如 other_script.py,然后运行 other_script.py,你只会看到 "This is my function." 的输出,而不会看到 "This is the main part of my_module.",因为 if __name__ == '__main__': 部分不会执行。

2.collections.Mapping

2.1解释

collections.Mapping 是 Python 中的一个抽象基类(Abstract Base Class,ABC),它用于表示映射类型(即可用于存储键-值对的数据结构)的基类

映射类型是一种可迭代的、可存储键-值对的数据结构,通常用于实现字典(dict)等数据类型。这些数据结构允许使用键来访问相应的值,而不仅仅是按照索引访问元素。

collections.Mapping 提供了一种通用的方式来测试一个对象是否属于映射类型。这在某些情况下很有用,特别是当需要检查一个对象是否可以像字典一样使用时。通常,Python 的字典(dict)和其他映射类型都会继承自 collections.Mapping,因此它们都可以被视为映射类型。

2.2示例

演示如何使用 isinstance 来检查对象是否属于映射类型:

from collections.abc import Mapping# 创建一个字典
my_dict = {'key1': 'value1', 'key2': 'value2'}# 使用 isinstance 检查是否为映射类型
if isinstance(my_dict, Mapping):print("my_dict is a mapping type.")
else:print("my_dict is not a mapping type.")

在这个示例中,首先创建了一个字典 my_dict,然后使用 isinstance 来检查它是否属于映射类型。由于字典是映射类型的一种,所以输出结果将是 "my_dict is a mapping type."。

总之,collections.Mapping 是一个抽象基类,用于表示映射类型,它提供了一种通用的方法来测试一个对象是否可以被视为映射类型,例如字典。

相关文章:

Python-if __name__ == ‘__main__‘和collections.Mapping的用法

1.if __name__ __main__ 1.1解释 if __name__ __main__: 是 Python 中的一个常见惯用法,用于确定一个 Python 脚本是被直接运行还是被导入为模块使用。 在 Python 中,每个模块都有一个特殊的内置变量 __name__,该变量的值决定了模块的运…...

Linux 基金会宣布正式进驻中国

在 LinuxCon 2017 (北京)即将召开前夕,我们Linux 中国会同 51CTO、开源中国对 Linux 基金会执行董事 Jim Zemlin 进行了一场远跨大洋的视频专访。 在这次专访中,Jim 先生回答了几个开源界和互联网领域关注的问题,并披…...

Pyecharts教程(二):使用pyecharts绘制3D散点图——以营养元素为例

Pyecharts教程(二):使用pyecharts绘制3D散点图——以营养元素为例 作者:安静到无声 个人主页 目录 Pyecharts教程(二):使用pyecharts绘制3D散点图——以营养元素为例1. 准备工作2. 读取JSON数据3. 配置图形选项4. 构造数据5. 实验结果推荐专栏在本文中,我们将学习如何使用…...

软考高级系统架构设计师系列论文第100篇:论软件的可维护性设计

软考高级系统架构设计师系列论文第100篇:论软件的可维护性设计 一、摘要二、正文三、总结一、摘要 2020年3月1日至12月20日,我参加了“数据安全访问平台”项目的开发,担任系统分析员的工作。该项目是某行业用户“数据中心二期”建设的主要内容,目标是:建立数据统一访问接口…...

curl 使用发送POST GET请求 HEADER设置

curl 使用发送POST GET请求 HEADER设置 文章目录 Get请求POST请求1. application/x-www-form-urlencoded2. Multipart/form-data3. application/json4. text/xml 文件内容作为提交的数据 curl 设置自定义HEADER 头注意事项:shell批处理外传 Get请求 get请求偏简单&…...

使用 Transformer 和 Amazon OpenSearch Service 构建基于列的语义搜索引擎

在数据湖中,对于数据清理和注释、架构匹配、数据发现和跨多个数据来源进行分析等许多操作,查找相似的列有着重要的应用。如果不能从多个不同的来源准确查找和分析数据,就会严重拉低效率,不论是数据科学家、医学研究人员、学者&…...

算法通关村第九关——透彻理解二分查找

1.前言 常见的查找算法有顺序查找、二分查找、插值查找、斐波那契查找、树表查找、分块查找、哈希查找等。如果进行归类,那么二分查找、插值查找(一种查找算法)以及斐波那契查找都可以归为插值查找(大类)。而插值查找…...

【字节跳动青训营】后端笔记整理-4 | Go框架三件套之GORM的使用

**本人是第六届字节跳动青训营(后端组)的成员。本文由博主本人整理自该营的日常学习实践,首发于稀土掘金。 我的go开发环境: *本地IDE:GoLand 2023.1.2 *go:1.20.6 *MySQL:8.0 本文介绍Go框架三…...

【TI毫米波雷达笔记】UART串口外设配置及驱动(以IWR6843AOP为例)

【TI毫米波雷达笔记】UART串口外设初始化配置及驱动(以IWR6843AOP为例) 最基本的工程建立好以后 需要给SOC进行初始化配置 int main (void) {//刷一下内存memset ((void *)L3_RAM_Buf, 0, sizeof(L3_RAM_Buf));int32_t errCode; //存放SOC初…...

C#---第十九课:不同类型方法的执行顺序(new / virtual / common / override)

本文介绍不同类型的方法,在代码中的执行顺序问题: 构造方法普通方法(暂用common代替)、虚方法(Virtual修饰)、New方法(new修饰)三个优先级相同overide方法(会替换virtual…...

[pytorch]torch.cuda用法以及判断显卡是不是存在问题

常见用法: torch.cuda.is_available() # 查看是否有可用GPU torch.cuda.device_count() # 查看GPU数量 torch.cuda.get_device_capability(device) # 查看指定GPU容量 torch.cuda.get_device_name(device) # 查看指定GPU名称 torch.cuda.empty_cache() # 清空程序占…...

JUC——多线程补充

前置可看 Java——多线程和锁_java多线程锁_北岭山脚鼠鼠的博客-CSDN博客 线程创建的三种方式 Thread、Runnable、Callable Thread类 Runable接口 Callable接口 Lamda表达式 Lamda表达式_北岭山脚鼠鼠的博客-CSDN博客 静态代理模式(Thread类的原理) 如下代码中 真实对象…...

代码随想录第32天|122.买卖股票的最佳时机 II,55. 跳跃游戏 ,45. 跳跃游戏 II

122.买卖股票的最佳时机 II 122. 买卖股票的最佳时机 II 思路比较简单 class Solution {public int maxProfit(int[] prices) {int res0,sum0;for(int i0;i<prices.length-1;i){if(prices[i1]-prices[i]>0){sumprices[i1]-prices[i];}ressum>res?sum:res;}return …...

Linux:Nginx服务与搭建

目录 一、Nginx概述 二、Nginx三大作用&#xff1a;反向代理、负载均衡、动静分离 三、Nginx和Apache 3.1Nginx和Apache的差异 3.2Nginx和Apache的优缺点比较 四、编译安装niginx 五、创建Nginx 自启动文件 六、Nginx的信号使用 6.1信号 七、升级 nginx1.18 nginx1.2…...

4、什么是NoSQL

4、什么是NoSQL NoSQL NoSQL Not Only SQL&#xff0c;就是不仅仅是SQL的意思 泛指非关系型数据库&#xff0c;随着web2.0的诞生&#xff01;传统的关系型数据库很难对付web2.0时代&#xff0c;因为web2.0时代又很多数据大爆炸新生的产物比如视频、音乐、大数据产生的其他的数…...

如何自己实现一个丝滑的流程图绘制工具(一)vue如何使用

背景 项目需求突然叫我实现一个类似processOn一样的在线流程图绘制工具。 这可难倒我了&#xff0c;立马去做调研&#xff0c;在github上找了很多个开源的流程图绘制工具&#xff0c; 对比下来我还是选择了 bpmn-js 原因&#xff1a; 1、他的流程图是涉及到业务的&#xff0c…...

ReoGrid.NET集成到winfrom

ReoGrid一个支持excel操作的控件,支持集成到任何winfrom项目内。 先看效果图: 如何使用&#xff1a; 使用ReoGrid自带excel模版设计工具先设计一个模版,设计器如下&#xff1a; 具体例子看官方文档 代码示例如下&#xff1a; var sheet reoGridControl1.CurrentWorksheet; …...

Elasticsearch实现增删改查

调用elasticsearch通常使用restful风格请求&#xff0c;这里记录一些常用的Java API和Postman Url Java API调用Es 1. 查询总文档数 Testvoid getAllCount() { // RestHighLevelClient clientnew RestHighLevelClient(RestClient.builder(new HttpHost("192.168…...

Rust 学习笔记(卷二)

文章目录 Rust 学习笔记&#xff08;卷二&#xff09;八、工程1. package 和 cratepackage 总览包根&#xff08;crate root&#xff09; 2. 模块初识模块单个源文件中的嵌套模块使用具有层级结构的源文件构造嵌套模块 3. 文档4. 使用第三方包5. 打包自己的包 九、标准库十、多…...

android amazon 支付接入

流程&#xff1a; 申请 Amazon 开发者帐号 ---> 在 amazon 控制台添加应用 ---> 添加应用内商品&#xff08;消费类商品&#xff0c;授权类商品&#xff0c;订阅类商品&#xff09;---> 导出 JSON 文件 --->集成 Amazon 支付 ---> 将导出的 JSON 文件 copy 到 …...

Vue2-快速搭建pc端后台管理系统

一.推荐二次开发框架 vue-element-admin Star(84k)vue-antd-admin Star(3.5k) 二.vue-element-admin 官网链接:https://panjiachen.github.io/vue-element-admin-site/zh/ 我这里搭建的是基础模版vue-admin-template(推荐) # 克隆项目 git clone https://github.com/PanJi…...

【产品文档】团队介绍PPT模板

今天和大家免费分享团队介绍的PPT模板。团队介绍是向他人展示团队的实力、专业性和能力的重要方式。通过一个有力的团队介绍&#xff0c;您可以突出团队的成员、经验、技能和取得的成就&#xff0c;从而增加信任、吸引合作伙伴、客户或投资者的兴趣 【模板预览】 动态演示效果…...

组件库的使用和自定义组件

目录 一、组件库介绍 1、什么是组件 2、组件库介绍 3、arco.design 二、组件库的使用 1、快速上手 2、主题定制 3、暗黑模式 4、语言国际化 5、业务常见问题 三、自定义组件 2、组件开发规范 3、示例实践guide-tip 4、业务组件快速托管 一、组件库介绍 1、什么是…...

网站和API支持HTTPS,最好在Nginx上配置

随着我们网站用户的增多&#xff0c;我们会逐渐意识到HTTPS加密的重要性。在不修改现有代码的情况下&#xff0c;要从HTTP升级到HTTPS&#xff0c;让Nginx支持HTTPS是个很好的选择。今天我们来讲下如何从Nginx入手&#xff0c;从HTTP升级到HTTPS&#xff0c;同时支持静态网站和…...

UnitTest笔记: 拓展库DDT的使用

DDT (Data-Drivers- Tests) 允许使用不同的测试数据运行同一个测试用例&#xff0c;展示为不同的测试用例。 第一步&#xff1a; pip安装 ddt 第二步&#xff1a; 创建test_baidu_ddt.py 1. 测试类要使用ddt 修饰 2. 不同形式的参数化&#xff1a; 列表&#xff0c;字典&a…...

裂缝检测,只依赖OPENCV,基于YOLO8S

裂缝检测&#xff0c;只依赖OPENCV&#xff0c;YOLOV8S 现在YOLOV8S训练目标非常方便&#xff0c;可以直接转换成ONNX让OPENCV调用&#xff0c;支持C/PYTHON&#xff0c;原理很简单&#xff0c;自己找博客&#xff0c;有兴趣相互交流...

python编程环境使用技巧3-程序打包pyinstaller

前言 在Python中&#xff0c;打包指的是将Python代码和相关资源&#xff08;如配置文件、图像等&#xff09;整合到一个可执行的文件或安装包中&#xff0c;以便于在其他环境中使用。 下面是使用pyinstaller进行打包的简要步骤&#xff1a; 1-安装pyinstaller&#xff1a;在命…...

Go 自学:defer关键字

我们可以使用defer关键字延迟代码的执行&#xff0c;相当于我们把代码放入一个stack中&#xff0c;遵循last in first out的原则输出代码。 package mainimport ("fmt" )func myDefer() {for i : 0; i < 5; i {defer fmt.Print(i)} }func main() {defer fmt.Prin…...

【云计算】Docker特别版——前端一篇学会

docker学习 文章目录 一、下载安装docker&#xff08;一&#xff09;Windows桌面应用安装&#xff08;二&#xff09;Linux命令安装 二、windows注册登录docker三、Docker的常规操作(一)、基本的 Docker 命令(二)、镜像操作(三)、容器的配置(四)、登录远程仓库 四、镜像管理(一…...

.net使用RabbitMQ小记

使用RabbitMQ的优点 1.性能全面&#xff0c;rabbitmq性能比较全面&#xff0c;是消息中间件的首选 2.高并发&#xff0c;rabbitmq实现语言是天生就具备高并发高可用的erlang语言 3.任务异步处理&#xff0c;将不需要同步处理的并且耗时长的操作由消息队列通知消息接受方进行异步…...

浏阳网站制作公司/家庭优化大师下载

做管理者&#xff0c;带团队&#xff0c;不用些代码可以说是很多IT从业人员的职业目标&#xff0c;认为做到了管理层&#xff0c;就不用天天处理技术问题&#xff0c;写代码调设备。很多人都计划5年以后做到技术经理和技术总监&#xff0c;那么到底多久可以做到管理层呢&#x…...

政务网站集约化建设/广州seo推荐

2019独角兽企业重金招聘Python工程师标准>>> 在前面随笔&#xff0c;我介绍了整个ABP优化过框架的分层模型&#xff0c;包括尽量简化整个ABP框架的各个层的关系&#xff0c;以及纳入一些基类的辅助处理&#xff0c;使得我们对应业务分层类或者接口尽可能减少代码&am…...

游戏网站开发目的/潍坊在线制作网站

/************************************************************************ busybox reboot 无效* 说明&#xff1a;* 最近调传感器&#xff0c;使用的ssh连接设备&#xff0c;调完程序发现reboot命令无效&#xff0c;后来* 经过使用uart口看启动过程…...

企业视频网站模板/电商运营培训大概多少学费

1.开野方式三条路的线权都是短手英雄&#xff0c;英雄强度决定兵线情况都是长手英雄&#xff0c;由于法师需要控蓝&#xff0c;AD强度更高卡莎和猫咪在前期的推线能力不强&#xff0c;对面派克前压&#xff0c;卡莎就A不了兵三条路的作战能力gank成功率刷野速度...

柳州网站制作/引流推广方案

转自&#xff1a;https://blog.csdn.net/qq_41839222/article/details/86503113 前言 等了一个月的realsense d435i终于发货了&#xff01; 这款D435i&#xff08;见下图&#xff09;在D435的基础上&#xff0c;另外搭载了博世的惯性测量单元&#xff08;IMU&#xff09;&…...

wordpress菜单栏设置/百度电脑版下载

IntelliJ IDEA 设置代码提示或自动补全的快捷键 (附IntelliJ IDEA常用快捷键) 转载博客园&#xff1a;https://www.cnblogs.com/jx17/p/6244491.html 修改方法如下&#xff1a; 点击 文件菜单(File) –> 点击 设置(Settings… CtrlAltS), –> 打开设置对话框。 在左侧…...