当前位置:首页 » 编程语言 » python逻辑运算符优先级

python逻辑运算符优先级

发布时间: 2023-04-09 18:50:53

python教程:第19篇 逻辑运算符

我们在高一时学习过命题的逻辑运算:与、或、非,在计算机科学中,其运算规则也是类似的(基本原理相同,但操作数与返回结果有所不同),Python也不例外。

在Python中,与用and、或用or、非用not表示。逻辑运算符一般用于操作返回值为bool类型的表达式,以表达式的值True(真)和False(假)为例。其运算规则总览如下:

需要特别注意的是,在Python中,虽然逻辑运算符的操作数一般是运算结果为逻辑值的表达式,但也可以是运算结果为数值、字符串、元组、列表、集合、字典等类型的表达式。返回值也不一定是逻辑(bool)类型。而有些教程错误地称只能操作bool类型的表达式以及始终返回bool类型。

我们可以用两个not查看某种数据等价的逻辑值,下面是一些常见数据类型的等价规则:

一、数值除了0视为False,其余数值(包括小数、负数、复数)均视为True:

二、字符串除了空字符串视为False外,其余均视为True(包括空格、制表、换行、回车等空白符,也包括字符串'False'):

三、对于元组、列表、集合、字典也是如此,空的视为False,非空的均视为True,即使其中只有一个值为False或0的数据:

有一种情况容易产生误解,就是使用小括号将False包围起来,这其实也是表示bool值,而不是元组,元组是使用小括号包围的数据列表,但是如果只有一个成员,数据后面要加一个逗号,正如上述示例中所示那样,下面的示例显示了小括号包围的False的数据类型:

四、对于一个类也是如此,非空类视为True(注:无法创建什么都不包含的空类):

五、None视为False:

总结一下就是: 数值0、空字符串、空元组、空列表、空集合、空字典以及None,均视为逻辑值False,其余均视为True。

需要注意的是,逻辑运算符的返回值不一定是bool类型。

了解了非bool类型的操作数等价的逻辑值之后,还需要了解逻辑运算符的完全运算规则,才能得知具体会返回什么值。

and为逻辑与(也称逻辑且),其使用语法如下:

表达式A and 表达式B

其中操作数表达式A和表达式B一般均为逻辑值。但也可以是数值、字符串、元组、列表、集合、字典、对象等类型。

其运算通用规则为: 如果 表达式A 的运算结果等价于False,返回其运算结果,不再计算表达式B。否则返回 表达式B 的运算结果。

对于最常用的两个操作数均为逻辑值的情况,只有当两个操作数均为True的情况下为True,其余情况均为False,以下是所有四种可能情况的运行示例:

其中两个操作数也都可以是非逻辑值。

当第1个操作数结果等价于False时,比如False、0、None、空字符串、空元组、空列表、空集合、空字典等,整个逻辑表达式返回第1个操作数,注意,返回的是操作数的原始值,而不是等价值False,下面是运行示例(None表示什么也没有,所以没有输出。set()返回空集合):

当第1个操作数等价于True时(非数值0、非空字符串等都等价于True),则不管第2个表达式的返回值是什么,都将返回第2个值,当然这时第2个表达式不能有语法错误:

or为逻辑或,其使用格式如下:

表达式A or 表达式B

其中操作数表达式A和表达式B与and中的操作数含义相同。

其运算通用规则为: 如果 表达式A 的运算结果等价于True,返回其运算结果,不再计算表达式B。否则返回 表达式B 的运算结果。 其与and的区别在于,or当表达式A为True则返回表达式A,and当其为False时返回表达式A。

以上面and的示例为模板,可以看到,or与and的返回值正好相反。

与and类似,当表达式A相当于True时,表达式B也不会计算:

下面是常见的两个操作数均为逻辑值的情况,or运算符的四种可能情况的运行示例(除非两个值都是False时返回False,其余情况返回True):

not为逻辑非,其使用格式如下:

not 表达式

其运算规则为: 当 表达式 的运算结果为False、0、None、空字符串、空元组、空列表、空集合、空字典时,返回True。其余情况均返回False。

下面是一些不同数据类型的运算示例:

与and和or不同的是,not的返回值始终是bool类型,即只有True和False两种可能的取值。

所以,可以使用not not 表达式来查看一个非逻辑值是等价True还是False,正如上文非逻辑操作数等价的逻辑值中所示的那样。

当然,not最常用的用法还是逆转逻辑值,下面是两种可能情况的运行示例:

逻辑运算符优先级not>and>or。

下面的示例证明and先于or运算:

下面的示例证明not先于or运算:

下面的示例证明not先于and运算:

另外,所有的逻辑运算符都比元组逗号分隔符的优先级要高,以and为例,比如下面是一个元组:

下面的例子中:

先计算了3 and 4,然后再组合成了元组,相当于:

而不是:

not与or的优先级也比其要高,下面是示例:

所以虽然元组有时可以省略小括号,但在与逻辑运算符运算时,元组请始终使用小括号。

这篇文章的整理与编写花费了我近十小时时间,从上午写到晚上。是我目前最具匠心的文章,如果说以前我的文章只适合初学者,偶尔超水平发挥才适合中级学者,那么这篇文章我感觉对高水平人员也有重要的参考意义。

就我目前所知,我所写的教程,在全网找不到第二个比它更优秀的了,当然,每个人心中都有一杆称,不同读者可能也有不同的际遇,我能做的只是做好自己。

所以,如果你觉得此文不错,可以分享给你身边的朋友、同学、同事、同乡,世界很大也很小,很多东西,初见只能依靠缘分。而再见就需要你的主动了,缘分天注定,努力亦可改变命运。

Python教程:第11篇 变量赋值

Python教程:第17篇 比较运算符

Python教程:第18篇 算术运算符

㈡ python-逻辑运算:not\and\or和布尔值:True\False

这东西在每一个语言都有,and or not 对应与、或、非三种逻辑运算;True和False是bool值,即真和假。
逻辑运算和布尔值经常用于if判断语句、循环语句的条件语句。
首先作为控制条件应该是一个布尔值,即真和假——True和false。
python的内置类——布尔类,只有两个实例:True和false。对于一般数字而言,0是False,非0是True;对于序列和容器类型,如列表、字典、字符串等,空为False,非空为True。
所以就有了这样的用法:

输出:1 为True

输出: 0 为 False

输出:a = '字符串'

这了可以看出一个实例本身可以作为控制条件,这是因为,解释器会先把这个实例转换为bool类型,然后根据这个bool类型执行程序。即bool(a) = True、bool(b) = False。
但是只用这样的方式控制程序显然不够,比如我希望a为空,b为非空的时候,我输出“我天下第一”,这怎么办?
如果不用not and or 就会写成这样:

输出:我天下第一
可以把a 看成False,b看成True。
从这里我们可以看到,我们用了两层if--else语句来判断a为空,b为非空的情况,那么我用逻辑运算呢?

输出:我天下第一
一样的:可以把a 看成False,b看成True。那么not a and b的意思就是:not False and True
这时候就是逻辑运算符的优先级的问题,这可以借鉴c语言的那本书《C程序设计》第五版的第92页

!非
算数运算符
关系运算符
&& 和 ||
赋值运算符

运算优先级从上到下,越来越低。
这是C语言里的,在python里就是:

not -------------->高
and 和 or ---------->低

所以我们先算not
于是 not False and True 就成所以了True and True这就很清楚了结果为True,所以“我天下第一”。
所以我们就可以总结出:
1.先将实例变为布尔值
2.在计算所有的not
3.根据语言特性,从左到右或者从右到左计算逻辑运算结果。
当然在python中是从左到右。

and 和 or 运算具有短路保护!什么意思呢?看一个栗子

1 or a
or的左边是1也就是True,根据or的运算法则,只要有一个真则为真,所以不管a是真还是假,结果都是真。

0 and a
and 左边为0,为False,同样,and只要有一个为假则为假,所以不管a是真还是假,结果都是假。
所以and 和 or 的结果可以根据第一个操作数的值来确定,那么他就不会对第二个操作数进行运算。
这个功能用起来要很小心,不然很可能会出现想不到的结果。

这里会输出什么呢?
输出:我天下第一

因为x是True,无论y and z 的结果是什么,这个语句的结果都是True,这就是短路保护,当然也有的人说惰性计算。

我觉得迭代器、生成器那个才叫惰性计算。

㈢ Python中的逻辑运算符:not,and,or的优先级

1、and为且,and两边的变量都是true的时候结果是true

如:1)5>3 and 4>2     True

       2)5>3 and 4<2     False

2、or为或,有一个旦卜哪是true的时候结果即为true

如模码:1)5>3 or 4>2     True

        2) 5>3 or 4<2      True

3、not取反.

如:1)弊饥not 5>3     False

       2)not  5<3     True

4、当not和and及or在一起运算时,优先级为是 not > and > or.

如果有括号,括号的优先级最高,先运算括号中的结果。

㈣ Python逻辑运算符and

and和or表达式的值是第一个能决定整个表达式是否成立的那个操作数的值。举例:
3 and 4:第一个操作数3为真,但不能保证and成立,还要看第二个操作数4;4也为真,此时可以确定and一定成立,因此这个表达式的值是4。
'hello' and [] and 'world':第一个操作数'hello'为真,但不能保证and成立;第二个操作数[]为假,此时可以确定and一定不成立,因此这个表达式的值是[]。
'a' or 'b' or 'c' or 'd':第一个操作数a为真,此时可以确定or一定成立,因此这个表达式的值是'a'。
1 and 2 or 3 and 4:and的优先级高于or,因此先求左边的1 and 2,这个子表达式的值是2,2为真,可以确定or一定成立,因此整个表达式的值是2。

㈤ python-逻辑运算和布尔值

乔治·布尔(George Boole,1815.11.2~1864),1815年11月2日生于英格兰的林肯。19世纪最重要的数学家之一,出版了《逻辑的数学分析》 ,这是它对符号逻辑诸多贡献中的第一次。

布尔的逻辑代数理论建立在两种逻辑值“真True”、“假False”和三种逻辑关系“与AND”、“或OR”、“非NOT”。这吵判大种理论为数字电子计算机的二进制、形关逻辑元件和逻辑电路的设计辅平了道路。

冯·诺依曼奠定了现代计算机的基础,被世人尊为“计算机之父”,但在谈到他的理论与构思时,他谦虚地说,这些理论与构思的基础来自于英国数学家图灵和布尔的思想。

谷歌在2015年的网页纪念了布尔诞辰200周年。

布尔值

计算机的逻辑判断,只有两种结果,就是True(英文意思是“真”)和False(英文意思是“假”)

在Python中:

只要数字零、空对象以及特殊对象None都被认作是假,其他为真

用 bool() 函数来查看一个数据会升竖被判断为真还是假

Python中有三种布尔表达式运算符:

x and y (两者都)

x or y (两者的其中之一)

not x (不)

not True就等于False,not False就等于True

实例:

True

False

True

False

布尔值操作符优先级为 not >and> or

x是True,无论y and z 的结果是什么,这个语句的冲轿结果都是True,这就是短路保护,也叫说惰性计算,懒得计算后面的。

其实记得布尔值操作符优先级为 not >and> or即可。

㈥ Python语法小记忆

Python 中的字符串还支持转义字符。所谓转义字符是指使用反斜杠“\”对一些特殊字符进行转义。

转义字符说明

\ 续行符

\n 换行符

\0 空

\t 水平制困塌表符,用于横向跳到下一制表位

\'' 双引号

\' 单引号

\\ 一个反斜杠

\f 换页

\0dd 八进制数,dd 代表字符,如\012 代表换行

\xhh 十六进制数,hh 代表字符,如\x0a 代表换行

在Python 中,提供了如下表所示的函数进行数据类型的转换。

函数作用

int(x) 将x 转换成整数类型

float(x) 将x 转换成浮点数类型

complex(real [,imag]) 创建一个复数

str(x) 将x 转换为字符串

repr(x) 将x 转换为表达式字符串

eval(str) 计算在字符串中的有效Python 表达式,并返回一个对象

chr(x) 将整数x 转换为一个字符

ord(x) 将一个字符x 转换为它对应的整数值

hex(x) 将一个整数x 转换为一个十六进制字符串

oct(x) 将一个整数x 转换为一个八进制的字符串

赋值运算符主要用来为变量等赋值。使用时,可以直接把基本赋值运算符“=”右边的值赋给左边的变量,也可以进行某些运算后再赋值给左边的变量。在Python 中常用的赋值。

运算符如下表所示。

运算符说明举例展开形式

= 简单的赋值运算x=y x=y

+= 加赋值x+=y x=x+y

-= 减赋值x-=y x=x-y

*= 乘赋值x*=y x=x*y

/= 除赋值x/=y x=x/y

%= 取余数赋值x%=y x=x%y

**= 幂赋值x**=y x=x**y

//= 取整除赋值x//=y x=x//y

比较运算符,也称关系运算符槐谈,用于对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回True,如果为假,则返回False。比较运算符通常用在条件语句中作为判断的依据。Python 中的比较运算符如下表所示。

运算符作用举例结果

> 大于'a' > 'b' False

< 小于156 < 456 True

== 等于'c' == 'c' True

!= 不等汪明圆于'y' != 't' True

>= 大于或等于479 >= 426 True

<= 小于或等于62.45 <= 45.5 False

逻辑运算符是对真和假两种布尔值进行运算,运算后的结果仍是一个布尔值,Python中的逻辑运算符主要包括and(逻辑与)、or(逻辑或)、not(逻辑非)。

运算符含义用法结合方向

and 逻辑与op1 and op2 从左到右

or 逻辑或op1 or op2 从左到右

not 逻辑非not op 从右到左

所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算应遵循的“先乘除,后加减”是一个道理。

下表按从高到低的顺序列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

运算符说明

** 幂

~、+、- 取反、正号和负号

*、/、%、// 算术运算符

+、- 算术运算符

<<、>> 位运算符中的左移和右移

& 位运算符中的位与

^ 位运算符中的位异或

| 位运算符中的位或

<、<=、>、>=、!=、== 比较运算符

在Python 中,使用内置函数input()可以接收用户的键盘输入。input()函数的基本用法如下:

variable = input("提示文字")

其中,variable 为保存输入结果的变量,双引号内的文字用于提示要输入的内容。

默认的情况下,在Python中,使用内置的print()函数可以将结果输出到IDLE或者标准控制台上。其基本语法格式如下:

Print(输出内容)

其中,输出内容可以是数字和字符串(字符串需要使用引号括起来),此类内容将直接

输出,也可以是包含运算符的表达式,此类内容将计算结果输出。

㈦ python中逻辑运算符和jsc语言有什么区别

在 Python 中,逻辑运算符和 javaScript 中的 if 语句类似,都是用来控制程序流程的。但是,在 Python 中,逻辑运算符的优先级比 JavaScript 中的 if 语句低,因此在某些情况下,Python 中的逻辑运算符可能会比 JavaScript 中的 if 语句更快。

例如,在 Python 中,可以使用 and 运算符来组合多个条件,而 JavaScript 中的 if 语句需要使用 && 运算符来组合多个条件。此外,Python 中的 not 运算符可以用来取反一个条件,而 JavaScript 中的 ! 运算符可以用来取反枯茄一个条件。

在 Python 中,可以使用 not 运算符来取反一个条件,例如:

python
x = 5
if x > 0:
print("x is positive")
else:
print("x is zero or negative")
在 JavaScript 中,可以使用 ! 运算符来取反一个条件,例如:

javascript
let x = 5;
if (x > 0) {
console.log("x is positive");
} else {
console.log("x is zero or negative");
}
在 Python 中,可以使用 not 运算符来取反一个条件,例如:

python
x = 5
if x > 0:
print("x is positive")
else:
print("x is zero or negative")
在 JavaScript 中,可以使用 ! 运算符来取反一个条件,例如:没明察

javascript
let x = 5;
if (x > 0) {
console.log("x is positive");
} else {
console.log("x is zero or negative");
}
总槐悄的来说,Python 和 JavaScript 在逻辑运算符和条件语句方面有一些不同之处,但是在某些情况下,Python 中的逻辑运算符可能会比 JavaScript 中的 if 语句更快。

㈧ python 中的.是什么意思

Python中的//是向下取整的激源意思。
a//b,应该是对除以b的结果向负无穷方向取整后的数
5//2=2(2.5向负无穷方向取整为2),同时-5//2=-3(-2.5向负无穷方向取整为-3)
/与//的区别
在Python中/表示浮点整除法,返回浮点宏铅尘结果,也就是结果为蔽禅浮点数;而//在Python中表示整数除法,返回大于结果的一个最大的整数,意思就是除法结果向下取整。

㈨ Python语言中,当 a=4, b=2 时, not(a=b) 的值是

在Python中,赋值操作符“=”的优先级比逻辑运算符“not”要低,所以 not(a=b) 相当于 not(True),因为赋值操作 b=2 返回的值是被赋的值 2,这个值被转化为True,因此 a=b 的返回值为True,再山孝瞎加上慎脊 not 对 True 取反的操作,结果为 False。所以当 a=4, b=2 时,逗空not(a=b) 的值是 False。

㈩ Python运算符优先级规则有哪些

以下运算符优先级顺序依次递增:

Lambda#运算优先级最低
逻辑运算符:or
逻辑运算符:and
逻辑运算符:not
成员测试:in,notin
同一性测试:is,isnot
比较:<,<=,>,>=,!=,==
按位或:|
按位异或:^
按位与:&
移位:<<,>>
加法与减法:+,-
乘法、除法与取余:*,/,%
正负号:+x,-x

热点内容
pid汇编程序 发布:2024-11-02 08:28:32 浏览:323
c语言数组scanf 发布:2024-11-02 08:28:20 浏览:784
android文本框居中 发布:2024-11-02 08:21:55 浏览:439
撕裂者哪个配置好 发布:2024-11-02 07:58:49 浏览:990
c编写的程序经过编译 发布:2024-11-02 07:41:18 浏览:941
mc服务器灵魂绑定如何出售 发布:2024-11-02 07:39:36 浏览:583
cf服务器不同如何一起玩游戏 发布:2024-11-02 07:38:24 浏览:945
手机压缩游戏 发布:2024-11-02 07:27:03 浏览:451
c语言的四书五经 发布:2024-11-02 07:21:42 浏览:742
vbaexcel数据库 发布:2024-11-02 07:16:09 浏览:11