本节教程讲解 Python 的运算法,例如算术、比较、赋值、逻辑、按位、身份(identity operator)和成员运算符。主要介绍语法和如何使用。
每一个运算符都有代表的特定符号,并使用一个或多个操作数(变量)来执行特定的操作。
例如:a | b or a & b。变量 a 和 b 是操作数,'|' 和 '&' 是运算符,'|' 运算符做二进制数的 OR 操作,'&' 运算符做二进制数的 AND 操作。
什么是运算符?
与许多编程语言一样,Python 保留了一些特殊字符作为运算符。每个运算符都会执行一些运算,例如做加法、乘法来操纵数据和变量。将作为输入被传递给运算符的变量称为操作数。建议阅读下 Python 的关键字。
例如:
>>> 7%4
3
% 是计算除法余数的模运算符,数字 7 和 4 是执行输入的操作数,最后的数字 3 是执行操作的结果。
算术运算符
使用算术运算符可以做任何数学计算,例如加、减、乘、除、模和指数计算等等。Python 程序有很多地方使用了算术运算符,例如 eval 函数、声明变量、计算和调用函数。
下面用列表描述内置的算术运算符:
| 运算符 | 作用 | 用法 |
|---|---|---|
| + | 加法 —— 两数之和 | a+b |
| - | 减法 —— 两数之差 | a-b |
| * | 乘法 —— 两数的乘积数 | a*b |
| / | 除法(浮点计算) —— 两数之商 | a/b |
| // | 除法(浮点计算) —— 两数之商(无小数) | a//b |
| % | 模 —— a 除 b 得到的整数余数 | a%b |
| ** | 指数 —— b 次 a 的乘积 | a**b |
例如:
a=7
b=4
print('Sum : ', a+b)
print('Subtraction : ', a-b)
print('Multiplication : ', a*b)
print('Division (float) : ', a/b)
print('Division (floor) : ', a//b)
print('Modulus : ', a%b)
print('Exponent : ', a**b)
输出结果:
Sum : 11
Subtraction : 3
Multiplication : 28
Division (float) : 1.75
Division (floor) : 1
Modulus : 3
Exponent : 2401
比较运算符
比较运算符能够确定两个值是否相等或一个值是否大于另一个值,然后根据结果进行决策。
下面用列表描述内置的比较运算符:
| 运算符 | 作用 | 用法 |
|---|---|---|
| > | 大于 —— 左操作数大于右操作数则返回True | a>b |
| < | 小于 —— 左操作数小于右操作数则返回True | a<b |
| == | 等于 —— 两个操作数相等则返回True | a==b |
| != | 不等于 —— 两个操作数不相等则返回True | a!=b |
| >= | 大于或等于 —— 左操作数大于或等于右操作数则返回True | a>=b |
| <= | 小于或等于 —— 左操作数小于或等于右操作数则返回True | a<=b |
例如:
a=7
b=4
print('a > b is',a>b)
print('a < b is',a<b)
print('a == b is',a==b)
print('a != b is',a!=b)
print('a >= b is',a>=b)
print('a <= b is',a<=b)
输出结果:
a > b is True
a < b is False
a == b is False
a != b is True
a >= b is True
a <= b is False
逻辑运算符
逻辑运算符可以根据多种条件做出决策,执行后的操作结果是一个布尔值(True 或者 False)。
但是,并不是所有逻辑运算符的结果是布尔值,例如 and 和 or 运算符返回的结果不是纯布尔值(可表示布尔值),而 not 运算符返回的结果就是纯布尔值。
下面用列表描述内置的逻辑运算符:
| 运算符 | 作用 | 用法 |
|---|---|---|
| and | 如果 a 是 false 返回 a,否则返回 b | a and b |
| or | 如果 a 是 false 返回 b,否则返回 a | a or b |
| not | 如果 a 是 false 返回 True,否则返回 False | not a |
例如:
a=7
b=4
print('a and b is',a and b)
print('a or b is',a or b)
print('not a is',not a)
输出结果:
a and b is 4
a or b is 7
not a is False
位运算符
按位运算符用来处理整数值的各个位,将整数值转化成二进制序列来处理。
按位运算符一般用来检查是否设置了特定位。例如物联网(IOT)应用程序基于是否设置了特定位来从传感器读取数据。
下面用列表描述内置的位运算符:
| 运算符 | 作用 | 用法 |
|---|---|---|
| & | 按位 AND(与) —— 在位级别比较两个操作数,两个对应的位均为 1 则返回 1 | a & b |
| | | 按位 OR(或) —— 在位级别比较两个操作数,任何一个位为 1 则返回 1 | a | b |
| ~ | 按位 NOT(取反) —— 反转单个操作数的所有位 | ~a |
| ^ | 按位 XOR(异或) —— 在位级别比较两个操作数,当任何一个位为 1 时返回 1(两个都为 1 时返回 0) | a ^ b |
| >> | 右移 —— a 的二进制位右移 b 位 | a >> b |
| << | 左移 —— a 的二进制位左移 b 位 | a << b |
例如:
4 和 6 的二进制数分别是 00000100 和 00000110。现在我们使用 AND 位运算符举例。
a=4
b=6
print('a & b is',a & b)
输出结果:
a & b is 4
这就进行了一次 AND(与) 操作。
0 0 0 0 0 1 0 0 &
0 0 0 0 0 1 1 0
---------------
0 0 0 0 0 1 0 0 # 对应的结果就是数字 4
赋值运算符
Python 中可以使用赋值运算符来定义变量值。
例如指令 a = 4 使用了原始赋值运算符,目的是将 4 的值赋给 a 变量。
下面用列表描述内置的赋值运算符:
| 运算符 | 例子 | 作用等同 |
|---|---|---|
| = | a=4 | a=4 |
| += | a+=4 | a=a+4 |
| -= | a-=4 | a=a-4 |
| *= | a*=4 | a=a*4 |
| /= | a/=4 | a=a/4 |
| %= | a%=4 | a=a%4 |
| **= | a**=4 | a=a**4 |
| &= | a&=4 | a=a&4 |
| |= | a|=4 | a=a|4 |
| ^= | a^=4 | a=a^4 |
| >>= | a>>=4 | a=a>>4 |
| <<= | a<<=4 | a=a<<4 |
高级运算符
Python 还有一些高级运算符,例如身份运算符和成员运算符。
身份运算符(Identity Operators)
身份运算符用来比较两个对象/变量的位置,可以用来确定对象是否共享同一个内存地址,这也就是说两个相等的变量内存地址不一定相同。
另外,身份运算符也可以用来确定一个值是特定的类还是类型。
| 运算符 | 作用 | 用法 |
|---|---|---|
| is | 两个操作数都指向同对象返回 True,否则返回 False | a is b |
| is not | 两个操作数指向不同对象返回 True,否则返回 False | a is not b |
例如:
# 使用 'is' 运算符
a = 7
if (type(a) is int):
print("true")
else:
print("false")
# 使用 'is not' 运算符
b = 7.5
if (type(b) is not int):
print("true")
else:
print("false")
输出结果:
true
true
成员运算符(Membership Operators)
成员运算符用来测试某值是否是对象(字符串、列表、元组或字典键)的成员。
在 C 语言中测试成员需要遍历序列并检查每一个值,与 C 相比,Python 会使这项工作变得简单很多。
| 运算符 | 作用 | 用法 |
|---|---|---|
| in | 值存在序列中返回 True | 7 in [3, 7, 9] |
| not in | 值不存在序列中返回 True | 7 not in [3, 5, 9] |
例如:
str = 'Python operators'
dict = {6:'June',12:'Dec'}
print('P' in str)
print('Python' in str)
print('python' not in str)
print(6 in dict)
print('Dec' in dict)
输出结果:
True
True
True
True
False