一日一技:巧用or关键字实现多重条件判断

Python技巧:停止使用“or”检查多个条件 我们都熟悉使用这两行来检查变量是否满足一个或多个等式。 if number == 1 or number == 2 or number == 3 or number == 4: do_smt() 这种方式编码显得非常的自然,大家也经常使用。 但我们今天说另外一个好的解决方案,接下来我将给出几种方法,我们将分析它们的优缺点。 Python中的“in”运算符 in 关键字在 Python 中基本上有两种用法: 1:遍历一个序列: 例子: seasons = ["winter", "spring", " 阅读详情

摄影:产品经理

小鱼布丁

在Python开发过程中,我们难免会遇到多重条件判断的情况的情况,此时除了用很多的if...elif...else以外,还可以巧用or关键字实现。

例如,我们要获取天气信息,现在有三个api接口。

api_1()
api_2()
api_3()

其中api_1()的数据又详细又好,但是接口不稳定,可能随时会掉线。

api_2()返回的结果比api_1()稍微差一点,但是稳定性还不错。

api_3()接口返回的是兜底数据,就是在前两个接口都故障的情况下才会使用。

如果前两个接口正常工作时返回字典,故障时他们都会返回None。

现在我们要获取天气信息,你可能会这样写代码:

weather = api_1()
if not weather:
    weather = api_2()
    if not weather:
        weather = api_3()

代码这样写,功能自然是没有问题,但是非常难看。

实际上,代码可以写为:

weather = api_1() or api_2() or api_3()

只需要1行代码就能实现自动选择。如果api_1()返回的是一个非空字典,那么由于短路效应,后面的两个函数都不会运行。当api_1返回None时,api_2()才会运行。并且如果api_2()返回非空字典,那么api_3()依然不会运行。

我们现在在Jupyter里面测试一下,首先看看如果api_1()直接返回非空字典的情况,如下图所示。

可以看到,在api_2()和api_3里面的两行print语句都没有执行。

接下来我们看看api_1()故障时候的情况。

此时先运行api_1()返回None,再运行api_2()返回非空字典。符合预期。

当前两个函数都返回None的时候,第三个函数才会运行,如下图所示。

除了做多重条件判断外,还可以用来自己和自己取或操作,实现重试。

例如api_1()可能成功也可能失败,所以需要尝试运行3次,那么代码可以这样写:

weather = api_1() or api_1() or api_1()

年度最火的文案

点这里,直达菜鸟学PythonB站!!
iOS平台上aa(见缝插针)游戏的简易实现 前言 阅读详情

相关推荐

汽车底盘技术解析:从悬架调校到智能化,如何评价国产车底盘实力

汽车底盘作为决定车辆驾驶质感、安全性和耐久性的核心系统,其技术内涵远不止于悬架结构。从行驶系、转向系到制动系的协同工作,底盘调校是一门融合机械原理与工程实践的艺术。在电动化与智能化浪潮下,底盘技术正经历从被动适应到主动响应的变革,CDC可变阻尼减震器和空气悬架等技术的应用,让底盘具备了通过OTA升级实现性能优化的可能。国产汽车品牌如奇瑞、吉利等,通过平台化架构研发与调校经验积累,正推动底盘技术从“能用”向“好用”乃至“塑造独特驾驶风格”迈进。理解底盘技术,需超越简单的结构对比,关注其在实际路况中的滤震性、支

weixin_34413103的博客 386

MYSQL使用OR关键字查询,MySQL带OR关键字的多条件查询

mysql带or关键字的多条件查询,与and关键字不同,or关键字,只要记录满足任意一个条件,就会被查询出来。select * | {字段名1,字段名2,……}from 表名where 条件表达式1 or 条件表达式2 […… or 条件表达式n];查询student表中,id字段值小于15,或者gender字段值为nv的学生姓名可以看出,返回的5条记录中,3条记录的id字段值小于15,或者gen...

weixin_34489345的博客 4409

电子纸价签实战:基于SSD1680的墨水屏驱动开发与优化

本文详细介绍了基于SSD1680驱动芯片的电子纸价签开发实战,涵盖硬件连接、驱动框架搭建、核心流程解析及性能优化。重点剖析了初始化配置、波形文件加载、图像数据写入与刷新触发等关键步骤,并提供了功耗优化、显示效果提升及代码健壮性等实用避坑指南,帮助开发者高效实现稳定低功耗的墨水屏驱动。

weixin_28278377的博客 230

if or函数套用_Excel将IF函数和OR函数结合使用进行多条件的选择性判断

Excel将IF函数和OR函数结合使用进行多条件的选择性判断时间:2015-01-22作者:snow来源:互联网Excel中的IF函数用于实现多分支选择结构的实现,是结构化编辑中与顺序、循环并列的一种结构。IF函数的实现方法灵活多样,但是无论其表现多么灵活,只要掌握了其本质用法,其它的扩展用法将会变得简单易行。IF函数是针对一个条件进行判断的函数,某些情况下并不能满足日常工作的需求。可...

weixin_30069113的博客 1万+

Spring Boot 3.5.4 + LangChain4j实战:用Milvus搭建企业级RAG问答系统(附阿里百炼API配置)

本文详细介绍了如何利用Spring Boot 3.5.4、LangChain4j与Milvus构建企业级RAG问答系统。内容涵盖从架构设计、阿里百炼API安全配置、Milvus部署优化,到RAG检索、会话管理等核心实现,并提供了生产级API设计、监控集成及性能优化等实战经验,旨在帮助开发者打造高可用、可维护的Java AI应用。

weixin_29054399的博客 610

别再只用线性回归了!用sklearn的核岭回归搞定非线性数据(附RBF核调参实战)

本文详细介绍了如何使用sklearn的核岭回归处理非线性数据,特别是RBF核的应用与调参实战。通过网格搜索找到最佳参数组合,核岭回归能有效捕捉数据中的复杂波动,显著提升模型性能。适合需要解决非线性问题的数据科学家和机器学习工程师。

weixin_34246529的博客 337

python逻辑运算符

Python逻辑运算的规范说明以及实际案例

主要发布一些日常学习代码及理解 1403

python——模拟砍价

类型:随机数。

m0_62488776的博客 1971

2!=5 or 0在python中是否正确-python and or用法

and 和 or 是python的两个逻辑运算符,可以使用and , or来进行多个条件内容的判断。下面通过代码简单说明下and or的用法:1. or:当有一个条件为真时,该条件即为真。逻辑图如下:测试代码如下:a=raw_input('please input somting:')if a=='a' or a=='b':print 'it is a or b'else:print 'it ...

weixin_37988176的博客 2128

共享单车数据分析与需求预测项目

除了自行车共享系统的有趣的实际应用之外,这些系统生成的数据特征使它们成为研究的有吸引力的对象。由于这些系统在交通、环境和健康问题中的重要作用,它们引起了极大的关注。Huber 回归器:一个对异常值具有鲁棒性的模型,CV 得分为 0.4660,表明它对此数据集可能不那么有效。代码中的内容cv_score就像您正在使用的机器学习模型的成绩单。它告诉您模型的表现如何。减少异常值的影响:它还可以减少异常值的影响,因为对数转换显着缩小了数据的范围。因此,cv_score平均分数表明您的模型的预测效果如何。

极光喵的博客 2948

ArcGIS学习记录—SHP文件转换为KML KMZ数据,并显示面要素相应的标注

使用相应软件操作获取KMZ数据得以下发到外业调查人员,使得矢量数据能够更显而易见,可视化,让外业人员的工作减轻许多。(过程步骤是借鉴于网络上的相关人士给的建议,根据这些建议自己做出来的步骤,可能有些粗略,有问题的话可以再进行探讨)...

qq_41046162的博客 5万+

一日不书,百事荒芜

文章目录Java基础:(1)一个“,java”源文件中是否可以包括多个类(不是内部类)?有什么限制?(2)Java有没有goto?(3)说说&和&&的区别 Java基础: (1)一个“,java”源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有很多类,但只能有一个public类,并且public类名必须与文件名一致。 首先区分什么是外部类,内部类: publi...

weixin_45893101的博客 729

使用amp训练出现Detected call of lr_scheduler.step() before optimizer.step().

这个警告是怎么产生的?是由于在算梯度的时候出现了nan,所以这一次更新会跳过,但是参数仍旧会更新所以出现了问题,按下面的做法加一个判断就行了。但是在使用amp进行混合精度训练出现的一个warning,调换代码顺序也不work。正常在训练的时候,对于优化器和参数更新的顺序这样就可以了。

weixin_46214675的博客 1306

Kotlin入门(7)循环语句的操作

上一篇文章介绍了简单分支与多路分支的实现,控制语句除了这两种条件分支之外,还有对循环处理的控制,那么本文接下来继续阐述Kotlin如何对循环语句进行操作。Koltin处理循环语句依旧采纳了for和while关键字,只是在具体用法上有所微调。首先来看for循环,Java遍历某个队列,可以通过“for (item : list)”形式的语句进行循环操作。同样Kotlin也能使用类似形式的循环,区别在于

aqi00的博客 3418

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

选择结构与分支结构 计算器的实现

选择结构与分支结构 生活中的行为模式 起床,刷牙,上班,下班----顺序性 来上班的方式:走路,打车,坐地铁等 ----选择性 每天上班敲代码(日复一日)—重复性(循环) 计算机的执行流程模式 顺序:程序自上而下执行 选择:选择结构 重复:循环结构 选择结构(if) 基本if选择结构 语法: if(布尔表达式){ //代码块 } 执行流程:对布尔表达式进行判断,结果为true,执行代码块,结果为false,跳过代码块 if else选择结构 语法: if(布尔表达式){ //代码块1 }e

mojgh的博客 798

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++循环结构深度解析:从信息素养大赛真题到编程思维构建

循环是程序控制流的三大基本结构之一,其核心原理在于通过条件判断、重复执行和状态更新的机制,实现任务的自动化与批量化处理。这一基础概念在C++等编程语言中,通过for、while、do-while等关键字实现,其技术价值在于提升代码复用性、优化算法效率,并构建复杂逻辑。在实际应用场景中,无论是处理数据遍历、用户输入验证,还是实现竞赛算法,对循环边界控制、中断与跳过逻辑的精准把握都至关重要。本文以信息素养大赛真题为例,深入剖析了循环中的常见陷阱,如差一错误和死循环,并系统讲解了break与continue语句的

weixin_34242819的博客 394

刷脸AI供应商下调业绩预期,苹果股价应声跌掉一个小米

雷刚 发自 凹非寺 量子位 报道 | 公众号 QbitAI供应商预警了一下,苹果股价就应声跌掉了一个小米集团。这是今天(11月13日)资本市场和科技业界最震惊的消息了。截...

量子位 681

C++编程实战:从编译链接到内存管理的核心问题诊断与解决

在软件开发中,编译与链接是程序构建的基础环节,理解其原理对于排查编程问题至关重要。编译期错误通常涉及语法和类型检查,而链接期错误则与符号解析和库依赖相关。这些底层机制直接影响程序的正确性和性能。在工程实践中,内存管理是C++等系统级语言的核心挑战,涉及资源分配、释放以及多线程环境下的数据安全。通过掌握智能指针、RAII等现代C++特性,开发者可以有效预防内存泄漏和野指针问题,提升代码的健壮性。本文聚焦于C++开发中的高频难题,如“未定义引用”、内存错误及多线程陷阱,结合具体场景和工具(如调试器、Saniti

weixin_30873847的博客 357

从俄罗斯方块到星际2,全都用得上:DeepMind无监督分割大法,为游戏而生

方栗子 发自 凹非寺量子位 报道 | 公众号 QbitAI只给AI喂一张图片。画里的各种物件,瞬间变成了独立的个体。可以移动起来,可以变形变色,毫无PS痕迹。就连绿色的...

量子位 283

C语言的分支和循环

我们都知道,C语言语句分为三个类型:顺序结构,选择结构和循环结构,我们生活中的任何一件事也都可以用这三种结构表示出来。再比如,我考研准备阶段每天起来早上背单词,中午刷卷子,晚上看教学视频,日复一日,每天都是如此,这就是循环。以上就是我了解到的选择语句的内容,在这里给大家做个分享,如果有什么说的不对的或者不规范的地方,还望大家积极指出。如果去掉break的话,假设我输入5,选择语句从case2进入,执行完后会继续执行case3,直到遇到break跳出或者执行完跳出。printf("正数");

2301_80255221的博客 1576

微信小游戏上半年流量变现增长30%,“小程序”游戏迎来爆发前夜?

更重要的是,整个游戏的研发逻辑从“游戏+AI”转变成“AI+游戏”,在AI大模型的基础上设计、研发了玩家从角色选择到游戏交互的全环节,丰富玩家开放世界体验。如今,大环境下是版号总量调控、行业积压良久后迎来骤然爆发,致使游戏新品又从数量、质量卷到宣发战术,市场将筛选出大批存量游戏产品,而小游戏平台或许能够让这些产品迸发出新的可能性,可以让这些存量游戏找到新的收入来源。”Unity高管透露。其中,国内市场游戏收入318亿元人民币,与去年同期持平,环比下降9.4%,但国际市场游戏收入127亿元,同比增长19%。

weixin_53666393的博客 257

【C++修炼秘籍】C++入门,初入山门(上)

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。

m0_62824408的博客 840

⚠️2019年iOS面试反思总结⚠️--⚠️不断更新当中ing⚠️

2019年的夏天,成都的天气格外的闷热。 因为公司的原因,导致我不得不考虑去面试一家稳定成熟的大公司,自己从一开始也一直梦想着进入一家可以得到广阔平台的公司发展,有朝一日可以当上技术负责人,可是现实总是那么残酷,4年了,4年了,每次面试感觉自己还是只是会回答:我知道,但是没有深入研究过。这个我了解过,但是还没有处理过。然后就是一个劲的出汗来排解内心的压力。3次换工作,面试过30-40次,每次都只是...

xjGitChat的博客 409

C++面向对象编程核心:封装、继承、多态深度解析与实战应用

面向对象编程(OOP)是一种主流的编程范式,其核心思想是通过对象来模拟现实世界,提升代码的可复用性、可维护性和可扩展性。其三大基本特性——封装、继承和多态,构成了OOP的理论基石。封装将数据与操作数据的方法绑定,隐藏内部实现细节,仅暴露必要接口,这不仅是数据安全性的保障,更是建立清晰接口契约和维护类不变式的关键,类似于硬件设计中的“封装”概念,如BGA封装保护内部芯片并提供标准化引脚。继承则允许创建层次化的类结构,实现代码复用和“是一个”关系的表达,但需谨慎使用以避免过度耦合。多态通过虚函数机制实现,它允许

weixin_30357231的博客 352

Python期末高效复习指南:核心语法、数据结构与面向对象编程精讲

Python作为一门动态强类型语言,其核心在于理解变量、数据类型与运算符的工作原理,这构成了程序逻辑的基石。从基础语法到复杂的数据结构,如列表、字典、集合和元组,掌握其特性和操作是编写高效代码的关键。函数作为模块化编程的基本单位,其参数传递机制和作用域规则是构建可复用、可维护程序的核心技术。面向对象编程(OOP)则通过封装、继承和多态三大特性,将数据和操作封装成对象,极大地提升了代码的组织性和扩展性,是构建复杂系统的有力工具。这些技术广泛应用于数据分析、Web开发、自动化脚本等场景。本文聚焦于Python期

weixin_34413802的博客 482

进阶面试题----提升篇

类型转换、零宽字符、transition、失活页面

maplelever的博客 183
上一篇: 再见了, 达叔!我用Python回顾一代喜剧大师203部作品,太经典了!
下一篇: 这家公司不要求996,但照样市值万亿!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值