Python and、or以及and-or语法总结


Posted in Python onApril 14, 2015

一、and:

在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。

>>> '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'

[code]

使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值
如果所有的值都为假,or 返回最后一个假值
注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值
三、and-or:
and-or 结合了前面的两种语法,推理即可。
[code]

>>> 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 相关文章推荐
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
python实现复制整个目录的方法
May 12 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
Python标准库sched模块使用指南
Jul 06 Python
Django REST framework 分页的实现代码
Jun 19 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
Python request操作步骤及代码实例
Apr 13 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
python自动提取文本中的时间(包含中文日期)
Aug 31 Python
Python实现JS解密并爬取某音漫客网站
Oct 23 Python
Python线程的两种编程方式
Apr 14 #Python
Python中的测试模块unittest和doctest的使用教程
Apr 14 #Python
利用Python中的输入和输出功能进行读取和写入的教程
Apr 14 #Python
对于Python编程中一些重用与缩减的建议
Apr 14 #Python
归纳整理Python中的控制流语句的知识点
Apr 14 #Python
Python中为什么要用self探讨
Apr 14 #Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 #Python
You might like
PHP中如何调用webservice的实例参考
2013/04/25 PHP
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
JQUERY操作JSON实例代码
2010/02/09 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
JS与C#编码解码
2013/12/03 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
5种Python单例模式的实现方式
2016/01/14 Python
值得收藏的10道python 面试题
2019/04/15 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
群胜软件Java笔试题
2012/09/29 面试题
淘宝中秋节活动方案
2014/01/31 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
大学迎新生标语
2014/10/06 职场文书
销售工作决心书
2015/02/04 职场文书
家庭贫困证明
2015/06/16 职场文书
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python