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中操作字典之clear()方法的使用
May 21 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
多个应用共存的Django配置方法
May 30 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
解决在pycharm中显示额外的 figure 窗口问题
Jan 15 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
Mar 19 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
python 实现有道翻译功能
Feb 26 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新手上路(十三)
2006/10/09 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
解决json日期格式问题的3种方法
2014/02/02 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
python文本数据相似度的度量
2018/03/12 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
学生自我鉴定
2013/12/18 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
业务部经理岗位职责
2014/01/04 职场文书
微博营销计划书
2014/01/10 职场文书
初中音乐教学反思
2014/01/12 职场文书
市场部管理制度
2014/02/02 职场文书
超市促销活动方案
2014/03/05 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
党员个人年度总结
2015/02/14 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
大学学生会辞职信
2015/05/13 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers