返回顶部
首页 > 资讯 > 后端开发 > Python >python 三元表达式
  • 691
分享到

python 三元表达式

表达式python 2023-01-31 03:01:33 691人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

之前学习的python提到了对于类似C语言的三元条件表达式condition ? true_part : false_part,虽然Python没有三目运算符(?:),但也有类似的替代方案,那就是true_part if conditio

之前学习python提到了对于类似C语言的三元条件表达式condition ? true_part : false_part,虽然Python没有三目运算符(?:),但也有类似的替代方案,那就是true_part if condition else false_part

>>> 1 if True else 0
1
>>> 1 if False else 0
0
>>> "Fire" if True else "Water"
'Fire'
>>> "Fire" if False else "Water"
'Water'


编程中我也一直这么用了,直到有一天发现了一个有趣的技巧,那就是and-or技巧,利用条件判断的优先特性来实现三元条件判断,比如P∧Q,在Python中如果P为假,那么Python将不会继续执行Q,而直接判定整个表达式为假(P值),当然如果P为真,那就还要继续执行Q来决定整个表达式值;同样的P∨Q,如果P为真,那么就不会继续执行Q了…

其实很多编程语言在逻辑判断中都应用了这套机制,目前我接触下来的貌似VB/VBScript可能不是这么做的。有了这套机制除了在if判断中提高效率外,我们还可以额外发掘一些有趣的功能,比如下面的PHP代码:

$conn = @Mysql_connect(...) or die("Failed")


如果mysql_connect成功的话将会返回resource资源句柄,如果失败的话将会返回False,等等,后面还有个or,也就是失败的话还将会继续执行or后面的die语句,于是输出了错误信息并终止后续代码的执行。

再如下面的javascript代码:

function getEvent(e) {
    e = e || window.event;
    return e;
}


这段代码获取的是event,假如没有给getEvent传入值(即e为undefined),或者e为NULL(两者在JavaScript条件中均代表False),e = e || window.event表达式将会把window.event赋值给e,否则e为Object对象,原表达式会蜕化为e = e赋值,也就是没有改变什么。

好了,扯了这么多,稍稍有些偏题了,下面继续聊Python的and-or技巧,可以这么说,这个技巧也是利用了逻辑判断的特殊性,貌似在真正的三元表达式if else没有出来的时候其就一直在扮演三元表达式的角色,其原型是condition and true_part or false_part,下面举几个例子:

>>> True and 1 or 0
1
>>> False and 1 or 0
0
>>> True and "Fire" or "Water"
'Fire'
>>> False and "Fire" or "Water"
'Water'


但是值得注意的是虽然表面看上去能够正常工作,其实还潜藏有不可知的风险,若我们的true_part本身就是个被Python认定为False的值,这个技巧就不可用了,我们知道空字符串就是这种情况。

>>> True and "" or "Water"
'Water'


上面的表达式其实我们期望返回空字串的,如何解决呢,我在Dive Into Python中找到了解决方案:那就是利用列表特性,因为包含空字符串的列表其表达式值仍然为True,所以我们可以用列表先包装一下,然后等表达式判断完毕后在解包:

>>> a = ""
>>> b = "Water"
>>> (True and [a] or [b])[0]
''


当然为了避免出错,我们可以将其包装为函数:

def iif(condition, true_part, false_part):
    return (condition and [true_part] or [false_part])[0]


现在Python已经在语言特性中加入三元条件表达式的支持了,那就是文章一开始介绍的if else写法,所以为了妥善起见,对于三元判断还是用新的if else特性吧,其实Python官方对于加入三元表达式语法也是讨论了很久的,可以参考《PEP 308 — Conditional Expressions》。


转载自:Http://wangye.org/blog/arcHives/690/


--结束END--

本文标题: python 三元表达式

本文链接: https://lsjlt.com/news/187225.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python 三元表达式
    之前学习的Python提到了对于类似C语言的三元条件表达式condition true_part : false_part,虽然Python没有三目运算符(:),但也有类似的替代方案,那就是true_part if condition ...
    99+
    2023-01-31
    表达式 python
  • python 中 ? : 三元表达式 的
    刚刚学python的时候,时常纠结于python中没有C语言中 ? : 的实现,今天终于发现了两种python的实现方式: (1) variable = a if exper else b (2)variable = (exper and...
    99+
    2023-01-31
    表达式 python
  • Python -- 三元表达式(三目运算
    一些语言(如Java)的三元表达式形如: 判定条件为真时的结果:为假时的结果 Python的三元表达式有如下几种书写方法: if __name__ == '__main__': a = '' b = 'True' c = 'F...
    99+
    2023-01-31
    表达式 Python
  • python如何使用三元表达式
    这篇文章主要为大家展示了“python如何使用三元表达式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何使用三元表达式”这篇文章吧。三元表达式熟悉...
    99+
    2024-04-02
  • python如何实现三元表达式
    这篇文章主要介绍了python如何实现三元表达式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。三元表达在许多用例中,我们需要根据条件定义具有特定值的变量,并且我们可以简单地使...
    99+
    2023-06-27
  • Python中的三目运算符(三元表达式)
    一般支持三目运算符的语言(如C语言)的语法格式一般是这样的: 判断条件(返回布尔值)?为真时的结果:为假时的结果 比如: x = x%2==1 x+1:x; python并不支持 :这种符号所表达的先判断再选择的含义,但仍然有相应的...
    99+
    2023-01-31
    表达式 运算符 Python
  • C++三元表达式详情
    if-else语句非常常用,但在进行一些简单逻辑判断的时候,会显得有些不太简洁。特别是在初始化的时候,比如我们有一个变量,某种情况下赋值成a,另外的情况下赋值成b。 使用if-els...
    99+
    2024-04-02
  • 三元表达式与列表推导式
    目录 三元表达式(掌握) 列表推导式(掌握) 条件成立时的返回值 if 条件 else 条件不成立时的返回值 x = 10 y = 20...
    99+
    2023-01-31
    表达式 列表
  • python二元表达式
    二元表达式: wide=1 new_w = 299 if not wide else 28 print(new_w) new_w = 299 if wide>0 else 28 print(new_w) a,b=1,2 ...
    99+
    2023-01-31
    表达式 python
  • python if三元表达式实例用法详解
    1、说明 使用一行代码快速判断,更换复杂的多行if语句,使代码能够简单地维护。 if三元表达式的阅读方式有点不符合阅读习惯。从句子中间的if条件开始读,条件满足的话,得到左侧的值x,条件不满足的话,得到else下面的...
    99+
    2022-06-02
    python if 三元表达式
  • 怎么在python中使用if三元表达式
    今天就跟大家聊聊有关怎么在python中使用if三元表达式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,...
    99+
    2023-06-14
  • Python中怎么实现三元表达式嵌套
    这篇文章给大家介绍Python中怎么实现三元表达式嵌套,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。请看代码案例:cmp = lambda a, b: 0 i...
    99+
    2023-06-16
  • Python进阶语法之三元表达式详解
    Python进阶语法之三元表达式详解 Python的三元表达式(Ternary Expressions)是一种简洁高效的编写条件逻辑的方式。与许多其他编程语言一样,Python也提供了三元表达式,可以...
    99+
    2023-10-08
    python 开发语言
  • php中三元表达式怎么写
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php中的三元运算三元运算可以实现简单的条件判断功能,即根据第一个表达式的结果在另外两个表达式中选择一个并执行三元运算表达式的写法:表达式1表达式2:表达式3意思为:如...
    99+
    2021-10-27
    php 三元表达式
  • php中三元表达式如何写
    这篇文章主要介绍“php中三元表达式如何写”,在日常操作中,相信很多人在php中三元表达式如何写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中三元表达式如何写”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-29
  • sql三元表达式怎么使用
    在SQL中,可以使用CASE语句来模拟三元表达式。例如,可以使用以下语法来实现三元表达式: SELECT column_na...
    99+
    2024-04-16
    sql
  • vue中巧用三元表达式解析
    目录如何巧用三元表达式三元表达式的巧妙使用:class=“ “的三元表达式写法如何巧用三元表达式 一开始我并不喜欢阅读别人的代码,话说程序员最讨厌的事:写代码...
    99+
    2024-04-02
  • golang三元表达式的使用方法
    golang并没有像C语言一样提供三元表达式。三元表达式的好处是可以用一行代码解决原本需要多行代码才能完成的功能,让冗长的代码瞬间变得简洁。不过对于新手来说,建议还是少用三元表达式。...
    99+
    2024-04-02
  • sql三元表达式有什么作用
    SQL中的三元表达式类似于其他编程语言中的三元运算符,用于在查询语句中根据条件返回不同的值。它的语法结构为: CASE WH...
    99+
    2024-04-16
    sql
  • python表达式由哪些元素构成
    python表达式是由运算符和操作数构成的,其中操作数可以使用标识符进行表示,如a=3;b=2;c=a*b;且表达式是一个值,单独的一个值是一个表达式,单独的变量也是一个表达式。...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作