当前位置: 首页 > 面试题库 >

Python中的“布尔”运算(即:和/或运算符)

潘嘉佑
2023-03-14
问题内容

此方法搜索第一组单词字符(即[a-zA-Z0-9_]),返回第一个匹配的组或None出现故障的情况。

def test(str):
    m = re.search(r'(\w+)', str)
    if m:
        return m.group(1)
    return None

相同的函数可以重写为:

def test2(str):
    m = re.search(r'(\w+)', str)
    return m and m.group(1)

这是相同的,并且已记录为行为。作为此页中明确指出:

表达式x and y首先计算x; 如果x为假,则返回其值;否则,y将求值并返回结果值。

但是,作为布尔运算符(甚至在手册中也是如此),我希望and返回一个布尔值。结果,当我发现这是如何工作时,我感到非常惊讶。

有什么其他用例,和/或这种不太直观的实现的原理是什么?


问题答案:

还有什么其他用例,

简明(因此一目了然,因此很清晰,因为毕竟它根本 不会
牺牲可读性!),任何时候您都需要检查某件事,或者使用某件事(如果是真的话),或者使用其他值(如果那话)是假的(即对and-扭转它or-我
刻意避免了实际的关键字,或最喜欢TrueFalse,因为我说的 每一个 对象,不只是bool- !)。

任何计算机屏幕上的垂直空间都是有限的,并且可以选择,最好将其花在有用的可读性辅助工具(文档字符串,注释,策略性地将空行分隔成块等)上,而不是例如旋转以下行:

inverses = [x and 1.0/x for x in values]

一分为六,例如:

inverses = []
for x in values:
    if x:
        inverses.append(1.0/x)
    else:
        inverses.append(x)

或更多局促版本。

和/或这种不太直观的实现的基本原理是什么?

远从“直观”,初学者经常是由事实:一些语言(如标准帕斯卡)并绊倒 没有 指定评估顺序和短路的性质andor; 的的Turbo
Pascal和语言标准,早在一天做出的Turbo所有时代最流行的方言帕斯卡之间的区别之一是正是涡轮增压实施andor很多像Python后来才(和C语言做早…)



 类似资料:
  • 前言 上个礼拜介绍了Shell编程范例之数值运算,对 Shell 下基本数值运算方法做了简单的介绍,这周将一起探讨布尔运算,即如何操作“真假值”。 在 Bash 里有这样的常量(实际上是两个内置命令,在这里我们姑且这么认为,后面将介绍),即 true 和 false,一个表示真,一个表示假。对它们可以进行与、或、非运算等常规的逻辑运算,在这一节,我们除了讨论这些基本逻辑运算外,还将讨论Shell编

  • 问题内容: 我对何时应该使用布尔运算符与按位运算符感到困惑 与 与 有人能启发我何时使用每种药物,何时使用一种药物会影响我的结果? 问题答案: 以下是一些准则: 布尔运算符通常用于布尔值,而按位运算符通常用于整数值。 布尔运算符是短路,但按位运算符不是短路。 短路行为在这样的表达式中很有用: 按位运算&符将无法正常工作,因为总是会评估双方,即。当你使用布尔运算符时,如果第一个为False,则不计算

  • 概述 布尔运算符用于将表达式转为布尔值,一共包含四个运算符。 取反运算符:! 且运算符:&& 或运算符:|| 三元运算符:?: 取反运算符(!) 取反运算符是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。 !true // false !false // true 对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都

  • 问题内容: 按位运算符应该传递变量并对其进行逐位操作。对于整数,longs,char,这是有意义的。这些变量可以包含由其大小强制的所有值范围。 但是,对于布尔值,布尔值只能包含两个值。1 =真或0 =假。但是没有定义布尔值的大小。它可以大或小。 那么在布尔值上使用按位运算符有什么作用?JVM本质上是否将其转换为普通的逻辑运算符并继续运行?是否出于操作目的将布尔值视为单个位实体?还是未定义结果以及布

  • 问题内容: 我正在Pandas中使用布尔值索引。问题是为什么要声明: 工作正常而 错误退出? 例: 问题答案: 当你说 你暗中要求Python进行转换并转换为布尔值。 NumPy数组(长度大于1)和对象(例如)没有布尔值-换句话说,它们引发 当用作布尔值时。那是因为不清楚何时应该为True或False。如果某些用户的长度非零,则可能会认为它们为True,例如Python列表。其他人可能只希望其所有