一、前言

三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,有时又称为三元运算符。

定义:

对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。

一个条件表达式绝不会既计算x,又计算y。

条件运算符是右结合的,也就是说,从右向左分组计算。例如,a ? b : c ? d : e将按a ? b : (c ? d : e)执行。

可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为条件是否成立,条件成立为结果1,否则为结果2。

注意:在C语言中,结果1 和 结果2的类型必须一致。

a ? b : c简单理解方式为:

if(a) {return b;} else { return c;
}

一个C语言中的例子解释:

int a = 2;int c = 3;int b = (a > c) ? a : c;cout << "b:" << b << endl;

cout是c++语言的输出符号。

endl英语意思是end of line,即一行输出结束,然后输出下一行。

cout<<endl是使程序此行输出结束。

cout<<"b:"<<b<<endl:类似于C中的:printf(“b:%d\n”,b)。

我们知道a>c的结果是False,所以b值返回c。

所以我们的输出结果为:

b:3

接下来看个复杂的:

int a = 1, b = 2, z, c = 3;
z = a > b ? a : (b > c ? b : c);
cout << "z:" << z << endl;

我们看右部分:b>c返回值为False,所以返回3

a>b返回False,所以最终输出为:z:3

至此,大家理解了三元运算符的定义。

二、Python中的三目运算符

Python语言不像Java、JavaScript等这些语言有这样的三目运算:

判段的条件?条件为真时的结果:条件为假时的结果

但是Python也有自己的三目运算符:

条件为真时的结果 if 判段的条件 else 条件为假时的结果

即:Python可以通过if语句来实现三目运算符的功能,因此可以把这种if语句当做三目运算符,具体语法格式如下:

返回True执行 if 表达式 else 返回False执行

我们举一个简单的例子来帮助理解:

假设现在有两个数字,我们希望获得其中较大的一个,那么可以使用 if else 语句,例如:

if a>b:max = a
else:max = b

但是 Python 提供了一种更加简洁的写法,如下所示:

max = a if a>b else b

这里详细解释一下:

max = a if a>b else b 的含义是:

如果 a>b 成立,就把 a 作为整个表达式的值,并赋给变量 max;

如果 a> b 不成立,就把 b 作为整个表达式的值,并赋给变量 max。

第二个例子:

a = "返回True执行" if 3 > 4 else "返回False执行"
print (a) 

我们的判断条件为3>4是不满足的,所以执行返回False执行

运行结果:返回False执行

三、在三目运算符中放置多条语句方式

在Python的三目运算符中,允许在"返回True执行"和"返回Flase执行"中放置多条语句,有以下两种方式:

1. 使用英文逗号隔开,每条放置的语句都会执行,程序返回多条语句的返回值组成的元组:

b = 3 + 1, "3 > 2",print('AAA') if 1 > 2 else print("BBB"),2 + 2
print (b)

上面的例子中,因为 1 > 2False,所以执行并返回3 + 1,"3 > 2",2 + 2,print("BBB")这四条语句,由于print()函数没有返回值,故返回None,运行结果如下:

BBB
(4, '3 > 2', None, 4)

2. 使用英文分号隔开,每条语句都会执行,但程序只会返回第一条语句的返回值:

b = 1 + 1; "3 > 2";print('AAA') if 1 > 2 else print("BBB");2 + 2
print (b)

这里的if…else…执行print(“BBB”),返回的是第一条语句1 + 1的返回值2,所以,运行结果如下:

BBB
2

四、总结

这是一种类似于其它编程语言中三目运算符? :的写法。

Python 是一种极简主义的编程语言,它没有引入? :这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能。

使用 if else 实现三目运算符(条件运算符)的格式如下:

exp1 if contion else exp2

condition 是判断条件,exp1exp2 是两个表达式。

如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;

如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。

五、三目运算符的嵌套

Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。在嵌套时需要注意 if 和 else 的配对,例如:

a if a>b else c if c>d else d

应该理解为:

a if a>b else ( c if c>d else d )

就是我们上面讲的:条件运算符是右结合的

例子:

a = int( input("Input a: ") )
b = int( input("Input b: ") )
print("a大于b") if a>b else ( print("a小于b") if a<b else print("a等于b") )

运行结果:

Input a: 5
Input b: 6
a小于b

该程序是一个嵌套的三目运算符。程序先对 a>b 求值,如果该表达式为 True,程序就返回执行第一个表达式 print(“a大于b”),否则将继续执行 else 后面的内容,也就是:( print("a小于b") if a<b else print("a等于b") ),进入该表达式后,先判断 a<b 是否成立,如果 a<b 的结果为 True,将执行 print(“a小于b”),否则执行 print(“a等于b”)。

Python三目运算符(三元运算符)用法详解(含Python代码)相关推荐

  1. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  2. python中的super用法详解_Python中super函数用法实例分析

    本文实例讲述了python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简 ...

  3. python classmethod_对Python中的@classmethod用法详解

    在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法. 总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的. 不过还是好奇去查了一下. 大致可以 ...

  4. python lambda函数-Python的Lambda函数用法详解

    在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要 ...

  5. Python BS4解析库用法详解

    Python BS4解析库用法详解 Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据.Bea ...

  6. Python格式化字符输出用法详解

    Python Print() 格式化输出用法详解 Python格式化有两种方式,一种利用%号格式输出,另一种利用Format: 建议利用Format格式,其具有较好的可扩展性 1.字符串格式化符号% ...

  7. python中setattr()函数用法详解

    setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的. getattr()用法详见博文:python中getattr()函数用法详解_IT之一小佬的博客-CSDN ...

  8. mysql like escape_mysql like语句用法详解 含通配符使用方法

    mysql like语句用法详解 含通配符使用方法2017-11-07 20:46 在对数据进行模糊查询的时候,我们基本上都会用到like语句. 我们先来了解一下like语句中的通配符:百分号(%). ...

  9. python怎么导入文件-Python文件如何引入?详解引入Python文件步骤

    python基本语法--引入Python文件 1.新建python文件 :在同目录lib下创建mylib.py和loadlib.py两个文件 2.在mylib.py文件中创建一个Hello的类 并且给 ...

  10. java super实例_java Super 用法详解及实例代码

    java Super 用法详解及实例代码 发布于 2021-1-8| 复制链接 摘记: java  Super 用法详解 1)有人写了个很好的初始化属性的构造函数,而你仅仅想要在其中添加另一些自己新建 ...

最新文章

  1. Java语言编程基础:数组
  2. 在JSF 2中对定制验证器进行参数化
  3. react 渲染道具_如何在浏览器中查看您的React状态和道具
  4. 三大工艺因素影响百万像素镜头成像质量
  5. 【PostgreSQL-9.6.3】LOG: unrecognized configuration parameter dynamic_shared_memory_type
  6. Java基础50道经典练习题(22年新版)
  7. 现在单片机编程语言是c吗,单片机编程用什么语言 哪个适合新手
  8. 菜鸟的Hadoop快速入门
  9. LNK1169 LNK2005错误
  10. 2021年最新程序员培训机构排名,学习前避坑必看
  11. Power BI应用案例:淘宝用户行为分析实战
  12. 教学|3DSMAX的mental ray皮肤,3S材质的制作和使用方法
  13. GitLab 项目管理和代码托管平台
  14. 数字图像-颜色表介绍
  15. 设计网站中的精品,你可能需要它--第五期(Logo设计,助你提升效率)
  16. 有赞线上拨测系统实践(一)
  17. $Linux vi/vim编辑器常用命令与用法总结
  18. TeamViewer用户注意:请尽快将其更新为最新版本
  19. 读Applying Deep Learning To Airbnb Search有感
  20. 故障申报系统php源码,seay源代码全自动在线审计系统,PHP源代码缺陷自动审计平台-在线工具...

热门文章

  1. 大学生活该怎么度过?
  2. MySQL进阶学习---MySQL锁问题
  3. Android动态添加5个图片资,Android绘图实例(Bitmmap,Canvas,Pain的使用)动态的在图片上添加文字(canvas.drawText)...
  4. 谈谈「绩效考核」背后的逻辑以及潜规则
  5. 星空棒棒糖太平常,昆虫棒棒糖才惊悚!
  6. win10取消密码登陆的方法
  7. C# asp.net的定时发送
  8. Linux下修改时间
  9. 具有现实世界效用的 10 大加密项目
  10. Executor执行器