深入分析python的and or 返回值
在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。
一、and:
>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。
如果布尔上下文中的某个值为假,则 and 返回第一个假值
二、or:
>>> 'a' or 'b'
'a'
>>> '' or 'b'
'b'
>>> '' or [] or {}
{}
>>> 0 or 'a' or 'c'
'a'
使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值
如果所有的值都为假,or 返回最后一个假值
注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值
三、and-or:
and-or 结合了前面的两种语法,推理即可。
>>> a='first'
>>> b='second'
>>> 1 and a or b
'first'
>>> (1 and a) or b
'first'
>>> 0 and a or b
'second'
>>> (0 and a) or b
'second'
>>>
这个语法看起来类似于 C 语言中的 bool ? a : b 表达式。整个表达式从左到右进行演算,所以先进行 and 表达式的演算。 1 and ‘first’ 演算值为 ‘first’,然后 ‘first’ or ‘second’ 的演算值为 ‘first’。
0 and ‘first’ 演算值为 False,然后 0 or ‘second’ 演算值为 ‘second’。
and-or主要是用来模仿 三目运算符 bool?a:b的,即当表达式bool为真,则取a否则取b。
and-or 技巧,bool and a or b 表达式,当 a 在布尔上下文中的值为假时,不会像 C 语言表达式 bool ? a : b 那样工作。
四、安全使用and-or
>>> a=""
>>> b="second"
>>> (1 and [a] or [b])
['']
>>> (1 and [a] or [b])[0]
''
>>>
由于 [a] 是一个非空列表,所以它决不会为假。即使 a 是 0 或者 ‘’ 或者其它假值,列表 [a] 也为真,因为它有一个元素。
一个负责的程序员应该将 and-or 技巧封装成一个函数:
def choose(bool,a,b):return (bool and [a] or [b])[0]
print choose(1,'','second') #''
深入分析python的and or 返回值相关推荐
- python a or b 输出值为_深入分析python的and or 返回值
转自:Python中文社区 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一. 一.and: >>> ...
- 不显示参数名_第51p,万能参数与返回值,Python中函数的返回值
大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第51篇文章,第三阶段的课程:Python进阶知识:详细讲解Python中的函数(四)====>函数的参数与返回值(下篇). ...
- C++调用python并获取其返回值
C++调用python并获取其返回值 先上实例代码: C++代码: //初始化py环境 // Py_Initialize();PyRun_SimpleString("import sys&q ...
- 使用java运行Python脚本并获取返回值
java运行Python脚本并获取返回值 java运行Python脚本并获取返回值 使用runtime类实现在java中运行Python脚本,话不多说,直接上代码 java运行Python脚本并获取返 ...
- 站长在线Python精讲:Python中函数的返回值
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<Python中函数的返回值>.本文的主要内容有:函数的返回值的含义.函数设置返回值的作用.return语句位置与多条 ret ...
- Python函数常见return返回值类型
Python函数常见return返回值类型Python函数return返回值类型主要包括: class 'int', class 'str', class 'tuple', class 'list', ...
- python中return的理解-Python return语句 函数返回值
return语句是从python 函数返回一个值,在讲到定义函数的时候有讲过,每个函数都要有一个返回值.Python中的return语句有什么作用,今天就来仔细的讲解一下. python 函数返回值 ...
- python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...
- Python | 基于参数和返回值的功能分类
There are following types of the functions based on their parameters and return values: 根据函数的参数和返回值, ...
最新文章
- C#是否该支持“try/catch/else”语法
- 【html、CSS、javascript-8】JavaScript作用域
- mac环境下的linux光标快捷键
- 【机器学习】机器学习中必知必会的 8 种降维技术,最后一款超硬核!
- mysql双主 绿色_mysql (双主,互主)
- Android 数据访问之Internal Storage 数据保存在内存 demo+笔记
- SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)
- Atitit 研发体系建立 数据存储与数据知识点体系知识图谱attilax 总结
- 程序员数学(0)--序言
- 关于Linux下载工具
- postsql时间计算
- IE实现PDF在线预览功能
- [受限玻尔兹曼机] 原理、求解过程推导、深度信念网络
- nvidia驱动,cuda与cudnn的关系
- 汽车以太网芯片IP的功能安全验证和优化
- python接入支付宝
- Vue CLI3不兼容IE11打开空白报错SCRIPT1003: 缺少 ‘:‘
- 百度云盘上传显示服务器异常,百度网盘常见问题之网络异常,这里有最全面的解决方法...
- 【设计模式】之适配器(Adapter)
- “北美之鹰”试图借助Windows 10物联网核心版打破世界陆地速度记录
热门文章
- Spring MVC请求处理流程
- java-逻辑运算符
- Horizon组件安装详解 - 远程连接OpenStack服务
- 201521123011 《Java程序设计》第8周学习总结
- java 保护内存操作的方法
- 怎么拦截触摸事件IOS
- matlab 思维数组_如何在Matlab中保存多维数组?
- Java黑皮书课后题第4章:*4.23(金融应用:酬金)编写一个程序,读取下面信息,然后输出一个酬金声明
- android 高级项目,从零开始的Android新项目8 - Data Binding高级篇
- 80m的mysql文件要导入多久_mysql导入数据库文件最大限制更改解决方法:You probably tried to upload too large file...