我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python 三元表达式

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python 三元表达式

之前学习的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/


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python 三元表达式

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 三元表达式

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

python 中 ? : 三元表达式 的

刚刚学python的时候,时常纠结于python中没有C语言中 ? : 的实现,今天终于发现了两种python的实现方式:(1) variable = a if exper else b(2)variable = (exper and [b
2023-01-31

Python -- 三元表达式(三目运算

一些语言(如Java)的三元表达式形如:判定条件?为真时的结果:为假时的结果Python的三元表达式有如下几种书写方法:if __name__ == '__main__':a = ''b = 'True'c = 'False'#方法一:为真
2023-01-31

python如何实现三元表达式

这篇文章主要介绍了python如何实现三元表达式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。三元表达在许多用例中,我们需要根据条件定义具有特定值的变量,并且我们可以简单地使
2023-06-27

Python中的三目运算符(三元表达式)

一般支持三目运算符的语言(如C语言)的语法格式一般是这样的:判断条件(返回布尔值)?为真时的结果:为假时的结果比如:x = x%2==1 ? x+1:x;python并不支持? :这种符号所表达的先判断再选择的含义,但仍然有相应的语法支持:
2023-01-31

三元表达式与列表推导式

目录 三元表达式(掌握) 列表推导式(掌握) 条件成立时的返回值 if 条件 else 条件不成立时的返回值x = 10y = 20print(f"x if x >
2023-01-31

python二元表达式

二元表达式:wide=1new_w = 299 if not wide else 28print(new_w)new_w = 299 if wide>0 else 28print(new_w)a,b=1,2max = a if a > b
2023-01-31

怎么在python中使用if三元表达式

今天就跟大家聊聊有关怎么在python中使用if三元表达式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,
2023-06-14

Python中怎么实现三元表达式嵌套

这篇文章给大家介绍Python中怎么实现三元表达式嵌套,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。请看代码案例:cmp = lambda a, b: 0 if a == b else 1 if a > b else
2023-06-16

python if三元表达式实例用法详解

1、说明 使用一行代码快速判断,更换复杂的多行if语句,使代码能够简单地维护。 if三元表达式的阅读方式有点不符合阅读习惯。从句子中间的if条件开始读,条件满足的话,得到左侧的值x,条件不满足的话,得到else下面的值x。 2、实例resu
2022-06-02

php中三元表达式如何写

这篇文章主要介绍“php中三元表达式如何写”,在日常操作中,相信很多人在php中三元表达式如何写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中三元表达式如何写”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-29

sql三元表达式怎么使用

在SQL中,可以使用CASE语句来模拟三元表达式。例如,可以使用以下语法来实现三元表达式:SELECT column_name,CASEWHEN condition THEN value1ELSE value2END AS result
sql三元表达式怎么使用
2024-04-16

php中三元表达式怎么写

在php中,三元表达式可以实现简单的条件判断功能,写法为“表达式1?表达式2:表达式3”;如果条件“表达式1”成立,则执行语句“表达式2”,否则执行“表达式3”。
2021-10-27

sql三元表达式有什么作用

SQL中的三元表达式类似于其他编程语言中的三元运算符,用于在查询语句中根据条件返回不同的值。它的语法结构为:CASEWHEN condition THEN value1ELSE value2END三元表达式的作用是根据特定条件来返回不同
sql三元表达式有什么作用
2024-04-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录