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

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

摄影:产品经理小鱼布丁

在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()
目录
相关文章
|
7月前
|
C++
C++ 条件与 If 语句:掌握逻辑判断与流程控制精髓
C++ 中的条件语句用于根据布尔表达式的真假执行不同代码。`if` 用于当条件为真时执行一段代码,`else` 配合 `if` 在条件不成立时执行另一段代码。`else if` 允许测试额外的条件。`switch` 语句提供多分支选择。还有三元运算符 `(condition) ? expressionTrue : expressionFalse`,它是一种简写的 if...else 形式,常用于一行内作出决定。
99 0
|
3月前
|
Java
巧用枚举消除条件判断
`shigen`是一位致力于撰写博客文章的作者,记录个人成长历程,分享真知灼见,并捕捉生活中的感动瞬间。在其最新文章中,通过枚举的方式展示了如何优雅地消除if-else判断,提供了一种更为简洁清晰的代码实现方案。利用自定义的`QuestionHandlerEnum`枚举类,实现了不同情况下的逻辑处理,展示了此方法在提升代码可读性和内聚性上的优势。与`shigen`一同探索编程之美,让每一天都有所进步。个人IP:shigen。
15 0
巧用枚举消除条件判断
|
4月前
条件循环语句有哪些?语法?区别?
条件循环语句有哪些?语法?区别?
35 0
|
6月前
|
Java C++ Python
选择、条件、循环语句是编程语言中用于控制程序流程的重要语句。
选择、条件、循环语句是编程语言中用于控制程序流程的重要语句。
|
5月前
|
语音技术 数据安全/隐私保护
语音识别,猜猜心里数字讲解,猜数字的组合,判断语句的嵌套,嵌套语句使用很简单,我们写一个外层嵌套的条件,利用缩进,满足条件,才会执行条件2,判断语句综合案例,如何产生变量的随机数字,while循环应用
语音识别,猜猜心里数字讲解,猜数字的组合,判断语句的嵌套,嵌套语句使用很简单,我们写一个外层嵌套的条件,利用缩进,满足条件,才会执行条件2,判断语句综合案例,如何产生变量的随机数字,while循环应用
|
7月前
|
C语言
C语言中的条件控制循环:深入解析与实战应用
C语言中的条件控制循环:深入解析与实战应用
89 1
|
7月前
|
C#
C#动态查询:巧用Expression组合多条件表达式
在C#中,利用`Expression`类和`AndAlso`、`OrElse`方法,可以组合两个`Expression<Func<T, bool>>`以实现动态多条件查询。该方法通过构建表达式树,方便地构建复杂查询。示例代码展示了如何创建表达式树,分别检查年龄大于等于18和姓名为"John"的条件,并使用`AndAlso`组合这两个条件,最终编译为可执行的委托进行测试。
293 1
|
7月前
|
C语言
C语言条件控制循环的深入解析
C语言条件控制循环的深入解析
68 0
|
7月前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
44 0
|
7月前
|
C语言
C语言的if语句条件控制
C语言的if语句条件控制
61 2