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中xrange和range的区别
May 13 Python
Python、Javascript中的闭包比较
Feb 04 Python
django实现分页的方法
May 26 Python
python实现图片彩色转化为素描
Jan 15 Python
Python中捕获键盘的方式详解
Mar 28 Python
Django保护敏感信息的方法示例
May 09 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
python二进制读写及特殊码同步实现详解
Oct 11 Python
Python多线程的退出控制实现
Aug 10 Python
python能做哪些生活有趣的事情
Sep 09 Python
基于Python正确读取资源文件
Sep 14 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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/05/28 PHP
php格式化金额函数分享
2015/02/02 PHP
php备份数据库类分享
2015/04/14 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
将python代码和注释分离的方法
2018/04/21 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
MYSQL基础面试题
2012/05/13 面试题
学习党章思想汇报
2014/01/07 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
产品销售计划书
2014/05/04 职场文书
检讨书格式范文
2015/05/07 职场文书
python缺失值的解决方法总结
2021/06/09 Python
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang