Python运算符包括赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、成员运算符和身份运算符。
表达式是将不同类型的数据(常亮、变量、函数)用运算符按照一定得规则连接起来的式子。
算术运算符和算术表达式
算术运算符包括四则运算符、求模预算符和幂运算符。
算术运算符 | 表达式 | 说明 |
+ | x + y | 加法运算 |
- | x - y | 减法运算 |
* | x * y | 乘法运算 |
/ | x / y | 除法运算 |
% | x%y | 求模运算 |
** | x**y | x的y次方 |
// | x // y | 两数相除向下取整 |
Python中的除法运算(Python3.x)进行浮点数计算,也就是说 x/y返回的结果是浮点数。
%为取模运算,x%y的结果将是x除以y的余数。
如果要从整数相除中得到一个整数, 丢弃任何小数部分, 可以使用另一个操作符"//"。
x = 5y = 3a = 4b = 2print(x + y) #结果为 7print(x - y) #结果为2print(x * y) #结果为15print(x / y) #结果为1.6666666666666667 不同的机器浮点数的结果可能不同print(x // y) #向下去整结果为1print(x % y) #两数相除取余结果为2print(x**y) #5的3次幂结果为125print(a / b) #结果为浮点数2.0print(a % b)#取余结果为0print(a // b)#取整结果为2
关系运算符是对两个对象进行比较。
运算符 | 表达式 | 说明 |
== | a==b | 等于,比较对象是否相等 |
!= 或 <> | a !=b a <>b | 不等于,比较两个对象是否不相等 |
> | a > b | 大于,比较a是否大于b |
< | a < b | 小于,比较a是否小于b |
>= | a>=b | 大于等于,比较a是否大于或者等于b |
<= | a<=b | 小于等于,比较a是否小于或者等于b |
a = 4b = 2c = 2print(a == b) #Falseprint(a != b) #Trueprint(a <> b) #Trueprint(a > b) #Trueprint(a < b) #Falseprint(a >= b) #Trueprint(c <= b) #True
逻辑运算符与逻辑运算表达式
运算符 | 表达式 | 说明 |
and | a and b | 逻辑与,当a为True时才计算b |
or | a or b | 逻辑或,当a为False时才计算b |
not | not a | 逻辑非 |
a = 4b = 2c = 0print(a>b and b>c) #a>b为True继续计算b>c,b>c也为True则结果为Trueprint(a>b and bb为True继续计算c c结果为False则结果为Falseprint(a>b or c b为True则不继续计算c
位运算符
按位运算符是把数字看作二进制来进行计算的。
运算符 | 表达式 | 说明 |
& | a & b | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
| | a | b | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 |
^ | a ^ b | 按位异或运算符:当两对应的二进位相异时,结果为1 |
~ | ~a | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 |
<< | a<<2 | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 |
>> | a>>2 | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 |
运算 | 操作 | 结果 |
a & b | 0011 1100 & 0000 1101 0000 1100 | 12 |
a | b | 0011 1100 | 0000 1101 0011 1101 | 61 |
a ^ b | 0011 1100 ^ 0000 1101 0011 0001 | 49 |
~a | ~ 0011 1100 1100 0011 | -61 有符号二进制数的补码 |
a << 2 | 0011 1100 -> 1111 0000 | 240 |
a >>2 | 0011 1100-> 0000 1111 | 15 |
赋值运算符
运算符 | 表达式 | 说明 |
= | c=a + b | 简单赋值运算符, 将 a + b 的运算结果赋值为 c |
+= | c +=a | 加法赋值运算符 c += a 等效于 c = c + a |
-= | c -=a | 减法赋值运算符 c -= a 等效于 c = c - a |
*= | c *=a | 乘法赋值运算符 c *= a 等效于 c = c * a |
/= | c /=a | 除法赋值运算符 c /= a 等效于 c = c / a |
%= | c %=a | 取模赋值运算符 c %= a 等效于 c = c % a |
//= | c //=a | 幂赋值运算符 c **= a 等效于 c = c ** a |
**= | c **=a | 取整除赋值运算符 c //= a 等效于 c = c // a |
成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
运算符 | 表达式 | 说明 |
in | a in b | 如果在指定的序列中找到值返回 True,否则返回 False。 |
not in | a not in b | 如果在指定的序列中没有找到值返回 True,否则返回 False。 |
a=4c=0list = [1,2,3,4,5]if (a in list): print("%d is in list:%r"%(a,list))if (c not in list): print("%d is not in list: %r"%(c,list))
Python的算术表达式具有结合性和优先性。结合性是指表达式按照从左到右、先乘除后加减的原则进行计算。
Python运算符优先级(由高到低)
** 指数 (最高优先级)~ + - 按位翻转, 一元加号和减号 (正负号)* / % // 乘,除,取模和取整除+ - 加法减法>> << 右移,左移运算符& 位 'AND'^ | 位运算符<= < > >= 比较运算符<> == != 等于运算符= %= /= //= -= += *= **= 赋值运算符is is not 身份运算符in not in 成员运算符not or and 逻辑运算符
另外,小括号可以改变优先级,有()的情况优先计算()中的表达式。