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