首页 > 编程语言 >Python中and、or用法实例

Python中and、or用法实例

时间:2023-02-06 15:00:44浏览次数:40  
标签:Python 演算 值为 用法 second 实例 bool 表达式 first

Python中and、or用法实例_Python

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

标签:Python,演算,值为,用法,second,实例,bool,表达式,first
From: https://blog.51cto.com/u_14448891/6039163

相关文章

  • Python工具箱系列(二十五)
    Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从......
  • Python工具箱系列(二十四)
    不管多少人黑微软,微软出品的大多数产品都能够深入人心,成为精品。在数据库领域,微软为专业人士提供SQLServer(简称mssql)。为日常办公人士提供Access与Excel这两款数据存储与......
  • OpenCV-Python快速入门(十二):轮廓拟合
    OpenCV-Python快速入门(十二):轮廓拟合​​前言​​​​前提条件​​​​实验环境​​​​轮廓拟合​​​​矩形包围框(cv2.boundingRect())​​​​最小包围矩形框(cv2.minAreaRe......
  • Python中monkey.patch_all()解决协程阻塞问题
    Python全栈工程师核心面试300问深入解析(2020版)----全文预览Python全栈工程师核心面试300问深入解析(2020版)----欢迎订阅直接参考以下实例,采用协程访问三个网站......
  • Python中文编码的问题(UTF-8和CP936的区别)
    Python全栈工程师核心面试300问深入解析(2020版)----全文预览Python全栈工程师核心面试300问深入解析(2020版)----欢迎订阅对于python中中文无法显示,可在首行添加......
  • Python import 上级目录中的模块
    ​​Python全栈工程师核心面试300问深入解析(2020版)----全文预览​​Python全栈工程师核心面试300问深入解析(2020版)----欢迎订阅一般加上这段代码即可imports......
  • #ifndef #define,#endif 和 #if DEBUG,#endif的用法
    在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误。在头文件中实用#ifndef#define#endif能避免......
  • AWS EMR实例组竞价实例扩展失败切换按需实例方法
     背景本文介绍如何解决EMR集群实例组模式下竞价实例请求失败后无法切换到按需实例问题,主要思路是通过CloudWatch+Lambda实现在EMR集群竞价实例请求失败情况下补充制定数量......
  • python创建virtualenv虚拟环境
    为什么要使用虚拟环境 a、隔离项目之间的第三方包依赖,如A项目依赖django1.2.5,B项目依赖django1.3。  b、为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不......
  • php去除数组中为0的元素的实例分析
    利用array_diff()函数来去除数组中为0的元素。该函数用于比较两个数组的值并返回差集,只需要使用一个包含“0”数组和原数组进行比较即可。语法格式“array_diff($arr,[0]......