Python中and和or如何使用


Posted in Python onMay 28, 2020

Python中and、or是Python中的逻辑运算符,它们的用法如何呢?

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'

使用 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') 
#''

实例补充:

>>> a ='first'
>>> b ='second'
>>>1and a or b  # 等价于 bool = true时的情况
'first'
>>>0and a or b  # 等价于 bool = false时的情况
'second'
>>> a =''
>>>1and a or b  # a为假时,则出现问题
'second'
>>>(1and[a]or[b])[0]# 安全用法,因为[a]不可能为假,至少有一个元素
''
>>>

到此这篇关于Python中and和or如何使用的文章就介绍到这了,更多相关Python中and、or用法实例内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中操作字典之clear()方法的使用
May 21 Python
在Python程序中操作文件之flush()方法的使用教程
May 24 Python
python获取一组数据里最大值max函数用法实例
May 26 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
Python上传package到Pypi(代码简单)
Feb 06 Python
python字典操作实例详解
Nov 16 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
python3使用matplotlib绘制散点图
Mar 19 Python
Python读取stdin方法实例
May 24 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
python 实现图片修复(可用于去水印)
Nov 19 Python
python中count函数知识点浅析
Dec 17 Python
Python如何安装第三方模块
May 28 #Python
python使用多线程+socket实现端口扫描
May 28 #Python
Python如何实现定时器功能
May 28 #Python
python实点云分割k-means(sklearn)详解
May 28 #Python
Python脚本实现监听服务器的思路代码详解
May 28 #Python
python中Ansible模块的Playbook的具体使用
May 28 #Python
python中如何进行连乘计算
May 28 #Python
You might like
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
动手学习无线电
2021/03/10 无线电
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
移动节点的jquery代码
2014/01/13 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
js 函数性能比较方法
2020/08/24 Javascript
Python的ORM框架SQLObject入门实例
2014/04/28 Python
Python入门篇之列表和元组
2014/10/17 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python3实现Web网页图片下载
2016/01/28 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
Python切片索引用法示例
2018/05/15 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
Python上下文管理器全实例详解
2019/11/12 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
2014年控辍保学工作总结
2014/12/08 职场文书
财务出纳岗位职责
2015/03/31 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
超级礼物观后感
2015/06/15 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis