Python学习笔记:运算符和优先级

本文详细介绍了Python中的运算符,包括算术、赋值、比较、逻辑、位、成员关系和身份运算符,以及运算符的优先级规则。通过实例解释了短路运算在逻辑表达式中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运算符和优先级

在Python中可以将运算符定义为负责两个操作数之间的特定操作的符号。Python中的运算符包括算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符、运算符优先级。

运算符

算术运算符

算术运算符用于在两个操作数之间执行算术运算。它包括加法(+),减法(-),乘法(*),除法(/),取余(%),指数(**),向下取整(//)运算。

以下实例中,若未说明数值则a=10,b=20

算数运算符描述示例
+两个操作数相加a+b=30
-第一个操作数减去第二个操作数a-b=-10
*两个操作数相乘a*b=200
/第一个操作数除以第二个操作数a/b=0.5
将第一个操作数除以第二个操作数后返回余数21%10=1
**计算第一个操作数的第二个操作数次幂3**4=81
//计算两个操作数的商并向下取整10//4=2

赋值运算符

赋值运算符用于将右表达式的值赋给左操作数。赋值运算符如下表所述。

运算符描述示例
=将右表达式的值赋给左操作数c=a+b,将a+b的值赋值给c
+ =通过右操作数的值增加左操作数的值,并将修改后的值赋给左操作数a +=b,即a=a+b
- =将左操作数的值减小右操作数的值,并将修改后的值分配回左操作数a -=b,即a=a-b
* =将左操作数的值乘以右操作数的值,并将修改后的值赋值回左操作数a *=b,即a=a*b
/ =左操作数的值除以右操作数的值,并将修改后的值赋值回左操作数a /=b,即a=a/b
%=将左操作数的值取余右操作数的值a %=b,即a=a%b
**=将左操作数的值取幂右操作数的值a **=b,即a=a **b
//=将左操作数的值向下取整右操作数的值a //=b,即a=a //b

比较运算符

比较运算符用于比较两个操作数的值,并相应地返回布尔值true或false。

运算符描述示例
==如果两个操作数的值相等,则条件变为真(1 == 2) 返回 False
!=如果两个操作数的值不等,则条件变为真(1 != 2) 返回true
>如果第一个操作数大于第二个操作数,则条件变为真(1 > 2) 返回flase
<如果第一个操作数小于第二个操作数,则条件为真(1 < 2) 返回true
<=如果第一个操作数小于或等于第二个操作数,则条件变为真(1 <= 2) 返回 true
> =如果第一个操作数大于或等于第二个操作数,则条件变为真(1 >= 2) 返回false

逻辑运算符

逻辑运算符用于计算逻辑表达式的值。

运算符描述示例
and如果表达式都为真,则条件为真true and false --> true
or如果其中一个表达式为真,则条件为真true or false --> true
not如果表达式a为真,则返回假;若未假则返回真not true --> false

对象实例测试运算符

身份运算符用于比较两个对象的存储单元

运算符描述实例
is如果两侧存在的参数指向同一对象,则返回为真a is b,如果引用的是同一个对象则返回 True,否则返回 False
not is如果两侧存在的参数不指向同一对象,则返回为真a is not b, 如果引用的不是同一个对象则返回结果 True,否则返回 False。

成员关系运算符

成员运算符主要用于字符串,列表或元组等类型。

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 Falsex 在 y 序列中 , 如果 x 在 y 序列中返回 True
not in如果在指定的序列中没有找到值返回 True,否则返回 Falsex 不在 y 序列中 , 如果 x 不在 y 序列中返回 True

位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

下面示例中变量 a 为 50,b 为 13。二进制形式如下:

a = 0011 0010
b = 0001 1110

a&b = 0001 0010

a|b = 0011 1110

a^b = 0010 1100

~a  = 1100 1101

a<<1 = 0110 0100
b>>2 = 0000 0111
运算符描述示例
&与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0a & b 输出结果未18
|或运算符:只要对应的二个二进位有一个为1时,结果位就为1a | b 输出结果为62
^异或运算符:当两对应的二进位相异时,结果为1a ^ b 输出结果为44
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1~a 输出结果为-51(使用带符号整数对a的按位取反的结果)
<<左移动运算符:把运算数的各二进位全部左移若干位,高位丢弃,低位补0a<<1 输出结果100
>>右移动运算符:把运算数的各二进位全部右移若干位,高位丢弃,低位补0b>>2 输出结果为7

运算符优先级

运算符描述
()括号,用于强制改变表达式的求值顺序
**幂运算
~、+、-按位取反,正、负号
*、/、%、//乘、除、取模和取整除
+、-加法、减法
<<、>>左移、右移运算符
&按位与
^、|位运算符
<=、<、>、>=、<> == !=比较运算符
is not is身份运算符
in not in成员运算符
not and or逻辑运算符
= += -= = /= %== **=赋值运算符

计算顺序

  • 运算符优先级表决定了运算符的计算顺序
  • 具有相同优先级的运算符按照从左向右的顺序计算
  • 使用圆括号来改变计算顺序
  • python中存在短路运算

短路运算

短路运算是指在逻辑运算中,如果表达式的结果已经可以确定,那么就不再继续执行后面的表达式。

  • 当一个表达式中有多个or、and运算时,可能会出现短路运算。以下是短路运算的一些基本规则:
  • 表达式从左至右运算
  1. or逻辑

    • 若 or 的左侧逻辑值为 True ,则直接输出 or 左侧表达式 。

    • 若 or 的左侧逻辑值为 False ,则直接输出or右侧的表达式。

  2. and逻辑

    若 and 的左侧逻辑值为 False ,则直接输出 and 左侧表达式

    若 and 的左侧逻辑值为 True,则直接输出and右侧的表达式。

即,若or的左侧逻辑值为True,则短路or后所有的表达式,直接输出True;

若and的左侧逻辑值为False,则短路其后所有and表达式,直到有or出现,输出and左侧表达式到or的左侧。

示例:

>>> print(True or False)   
True
>>>print(False or True)
True
>>>print(True and False)
False
>>>print(True and True)
True
>>>print(True and False or True)
True
>>>print(False or True and False)
False

尽量不要在一个表达式内使用过多的or和and,或者以括号 () 来区分逻辑顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值