举个简单的例子,1+2=3,,1和2称为操作数,+称为运算符。
算术运算符
Python中算术运算符用来组织整型和浮点型数据的算术运算,可分为一元运算符和二元运算符。
一元算术运算符
运算符 | 描述 |
---|---|
- | 取反 |
输入下面代码
a = 9
-a
print(a)
代码运行结果:
二元算术运算符
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
** | 幂 |
// | 返回商的整数部分(向下取整) |
输入下面代码
a = 10
b = 5
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a%b)
print(a**b)
a = -9
b = 2
print(a//b)
代码运行结果
注意:
- 在执行加法运算时,若两个字符串相加(包括数字也一样),则结果为相加的字符串连接后形成的新字符串
- 在执行加法运算时,不能将字符串与其他数据类型连接起来
- 在执行除法运算时,得到的是精度为一位小数的浮点型,而不是整数,若要得到整数,可以用int()函数
- 在执行除法运算时,除数不能为0
- 在执行乘法运算时,若为字符串乘以数字n,则返回一个被重复n次的字符串
- Python中没有自增或自减运算
- 可以使用divmod()函数同时得到商和余数,结果返回一个元组。例如:divmod(13,3),结果为(4,1)
输入下面代码
a = 'aaa'
b = 'bbb'
print(a+b)
a = '20'
b = '30'
print(a+b)
print(type(a+b))
a = 'hello'
print(a*3)
代码执行结果
关系运算符
比较两个表达式的大小,它的结果是布尔类型,即True或False
运算符 | 例子 | 描述 |
---|---|---|
== | a==b | 等于,可以应用于基本数据类型和引用类型,主要用于判断内容是否相等;若为引用类型,则比较是否为同一对象(这种比较往往没有意义) |
!= | a!=b | 不等于 |
> | a>b | a大于b时返回True,否则返回False |
< | a<b | a小于b时返回True,否则返回False |
>= | a>=b | a大于或等于b时返回True,否则返回False |
<= | a<=b | a大于或等于b时返回True,否则返回False |
Python中关系运算符除了用于比较整数、浮点数等对象外,也可用于比较序列(字符串、列表、元组)
注意:
Python3中废弃了“<>”(不等于)的运算符
输入下面代码
a = 'Hello'
b = 'Hello'
print(a==b)
a = []
b = [1,2]
print(a==b)
print(a<b)
代码运行结果
逻辑运算符
逻辑运算符对布尔型自变量进行运算,其结果也是布尔型
运算符 | 名称 | 例子 | 描述 |
---|---|---|---|
not | 逻辑非 | not a | a为True时,值为False;a为False时,值为True |
and | 逻辑与 | a and b | a、b全为True时,值为True,否则为False |
or | 逻辑或 | a or b | a、b全为False时,值为False,否则为True |
注意:
Python中的逻辑与和逻辑或都采用“短路设计”,即若执行a and b时,若a 为False,则不会执行b,且结果为False;执行a or b 时,若a 为True,则不会执行b,且结果为True。
位运算符
位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型数据
运算符 | 名称 | 例子 | 描述 |
---|---|---|---|
~ | 位反 | ~x | 将x的值按位取反(将二进制表示中的每一位取反,0 变为 1,1 变为 0) |
& | 位与 | x&y | x与y位进行位与运算(参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0) |
| | 位或 | x|y | x与y位进行位或运算(参与运算的两个值,只要对应的二个二进位有一个为1时,结果位就为1) |
^ | 位异或 | x^y | x与y位进行位异或运算(当两对应的二进位相异时,结果为1) |
>> | 右移 | x>>a | x右移a位,高位采用符号位取反;可以理解为x除以2的a次方 |
<< | 左移 | x<<a | x左移a位,低位用0补位;可以理解为x乘以2的a次方 |
输入下面代码
a = 0b10110010
b = 0b01011110
print("a | b = {0}".format((a|b))) #0b11111110
print("a & b = {0}".format((a&b))) #0b00010010
print("a ^ b = {0}".format((a^b))) #0b11101100
print("~a = {0}".format(~a)) #-179
c = 10
print("c >>2 = {0}".format((c>>2)))
print("c <<2 = {0}".format((c<<2)))
代码执行结果
赋值运算符
一种简写,一般用于变量自身的变化
运算符 | 名称 | 例子 | 描述 |
+= | 加赋值运算符 | 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 |
&= | 位与赋值运算符 | 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 = 1
b = 2
a += b
print("a + b = {0}".format(a))
a -= b
print("a - b = {0}".format(a))
a *= b
print("a * b = {0}".format(a))
a /= b
print("a / b = {0}".format(a))
a = 0b1100
b = 0b1100
a |=b
print("a | b = {0}".format(a))
a ^=b
print("a ^ b = {0}".format(a))
代码执行结果
其他运算符
同一性测试运算符
同一性测试运算符就是测试两个对象是否为同一个对象,类似于 == 运算符,不同的是 == 运算符比较的是内容是否相等,当然如果是同一对象 == 也返回True。
运算符 | 例子 | 描述 |
---|---|---|
is | a is b | 测试a和b是否为同一对象 |
is not | a is not b | 测试a和b是否不是同一对象 |
成员测试运算符
测试在一个序列对象中是否包含某一个元素
输入下面代码
a = 'Hello'
b = 'Hello'
print(a is b)
print('e' in a)
print('hello' in a)
代码执行结果
运算符优先级
在一个表达式计算过程中,运算符优先级非常重要。只需要知道运算符优先级大体顺序为:算术运算符→位运算符→关系运算符→逻辑运算符→赋值运算符即可。下面表格按照优先级从高到低列出运算符优先级。
优先级 | 运算符 | 说 明 |
---|---|---|
1 | () | 小括号 |
2 | f(参数) | 函数调用 |
3 | [start:end],[start:end:step] | 分片 |
4 | [index] | 下标 |
5 | . | 引用类成员变量 |
6 | ** | 幂 |
7 | ~ | 位反 |
8 | +,- | 正负号 |
9 | *, / ,% | 乘法、除法与取余 |
10 | +,- | 加法与减法 |
11 | << ,>> | 位移 |
12 | & | 位与 |
13 | ^ | 位异或 |
14 | | | 位或 |
15 | in,not in,is,is not, <,<=,>,>=,<>,!=,== | 比较 |
16 | not | 逻辑非 |
17 | and | 逻辑与 |
18 | or | 逻辑或 |
19 | lamba | Lamba表达式 |