26.Python三目运算符(三元运算符)用法详解
Python 可通过 if 语句来实现三目运算符的功能,因此可以近似地把这种 if 语句当成三目运算符。作为三目运算符的 if 语句的语法格式如下:
True_statements if expression else False_statements
三目运算符的规则是:先对逻辑表达式 expression 求值,如果逻辑表达式返回 True,则执行并返回 True_statements 的值;如果逻辑表达式返回 False,则执行并返回 False_statements 的值。看如下代码:
- a = 5
- b = 3
- st = "a大于b" if a > b else "a不大于b"
- # 输出"a大于b"
- print(st)
实际上,如果只是为了在控制台输出提示信息,还可以将上面的三目运算符表达式改为如下形式:
- # 输出"a大于b"
- print("a大于b") if a > b else print("a不大于b")
Python 允许在三目运算符的 True_statements 或 False_statements 中放置多条语句。Python 主要支持以下两种放置方式:
- 多条语句以英文逗号隔开:每条语句都会执行,程序返回多条语句的返回值组成的元组。
- 多条语句以英文分号隔开:每条语句都会执行,程序只返回第一条语句的返回值。
先看第一种情形,使用如下代码:
- # 第一个返回值部分使用两条语句,逗号隔开
- st = print("crazyit"), 'a大于b' if a > b else "a不大于b"
- print(st)
上面程序中 True_statements 为 print("crazyit"),'a大于b',这两条语句都会执行,程序将会返回这两条语句的返回值组成的元组。由于 print() 函数没有返回值,相当于它的返回值是 None。运行上面代码,将看到如下结果:
crazyit
(None,'a大于b')
如果将上面语句中的逗号改为分号,将逗号之后的语句改为赋值语句,即写成如下形式:
- # 第一个返回值部分使用两条语句,分号隔开
- st = print("crazyit"); x = 20 if a > b else "a不大于b"
- print(st)
- print(x)
此时虽然 True_statements 包含两条语句,但程序只会返回第一条语句 print(”crazyit”) 的返回值,该语句同样返回 None,因此相当于 str 的返回值为 None。运行上面代码,将看到如下结果:
crazyit
None
20
需要指出的是,三目运算符支持嵌套,通过嵌套三目运算符,可以执行更复杂的判断。例如,下面代码需要判断 c、d 两个变量的大小关系:
上面代码首先对 c>d 求值,如果该表达式为 True,程序将会执行并返回第一个表达式:print(”c大于d”);否则系统将会计算 else 后面的内容:(print("c小于d") if c < d else print("c等于d")),这个表达式又是一个嵌套的三目运算符表达式。注意,进入该表达式时只剩下“c小于d”或“c等于d”两种情况,因此该三目运算符再次判断 c<d,如果该表达式为 True,将会输出“c小于d”;否则只剩下“c等于d”一种情况,自然就输出该字符串了。
26.Python三目运算符(三元运算符)用法详解的更多相关文章
- [转]使用python来操作redis用法详解
转自:使用python来操作redis用法详解 class CommRedisBase(): def __init__(self): REDIS_CONF = {} connection_pool = ...
- Python Deque 模块使用详解,python中yield的用法详解
Deque模块是Python标准库collections中的一项. 它提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除. https://blog.csdn.net/qq_3 ...
- Python中self的用法详解,或者总是提示:TypeError: add() missing 1 required positional argument: 'self'的问题解决
https://blog.csdn.net/songlh1234/article/details/83587086 下面总结一下self的用法详解,大家可以访问,可以针对平时踩过的坑更深入的了解下. ...
- python的转义字符及用法详解
在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符. Python3.7 的官方文档中列出的所支持的转义字符,如下表: 中文版: 注:\oyy 应该是 \0yy 另外 :\e 和 \0 ...
- python OptParse模块的用法详解
OptParse模块的简单介绍 Python 有两个内建的模块用于处理命令行参数: 一个是 getopt只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成 ...
- 使用python来操作redis用法详解
1.redis连接 redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRe ...
- python 对excel操作用法详解
在python中,对excel表格读,写,追加数据,用以下三个模块: 1.wlrd 读取excel表中的数据 2.xlwt 创建一个全新的excel文件,然后对这个文件进行写入内容以及保存. 3.xl ...
- python os.path模块用法详解
abspath 返回一个目录的绝对路径 Return an absolute path. >>> os.path.abspath("/etc/sysconfig/selin ...
- python中yield的用法详解-转载
原文链接:https://blog.csdn.net/mieleizhi0522/article/details/82142856 ,今天在写python爬虫的时候,循环的时候用到了yield,于是搜 ...
- Python可变参数函数用法详解
来自:http://c.biancheng.net/view/2257.html 很多编程语言都允许定义个数可变的参数,这样可以在调用函数时传入任意多个参数.Python 当然也不例外,Python ...
随机推荐
- Spring boot data jpa 示例
一.maven pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...
- Python 风格指南
https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/contents/ 目前个人遵循的基本规范 ...
- O055、Detach Volume 操作
参考https://www.cnblogs.com/CloudMan6/p/5636510.html 本节我们开始学习 Volume Detach 操作,就是将Volume从Instance上 ...
- O045、理解 Cinder 架构
参考https://www.cnblogs.com/CloudMan6/p/5573159.html 从本节开始我们学习OpenStack 的 Block Storage Service ,Cin ...
- 编译程序遇到问题 relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;
编译程序遇到问题 relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; 发现编译 ...
- git、github常用操作
1.将github项目拷贝到本地 $ git clone https://github.com/jim2500/miaosha_project.git 2.修改本地项目上传到github T470s@ ...
- js之运算符(关系运算符)
关系运算符用于测试两个值之间的关系,根据关系是否存在而返回true或者是false.关系表达式总是返回一个布尔值. 具有如下8个关系运算符:大于(>),小于(<),小于等于(<=), ...
- Action向视图传值的6种方式(转)
在使用ASP.NET MVC进行项目开发时,经常会碰到从Action向视图传值的问题,今天我就把我所知道的方式总结了一下,分成了以下六种: 1.使用ViewData进行传值 在Action中,有如下代 ...
- odoo字段属性
以下为可用的非关联字段类型以及其对应的位置参数: Char(string)是一个单行文本,唯一位置参数是string字段标签. Text(string)是一个多行文本,唯一位置参数是string字段标 ...
- Delphi ClearCommError函数