上一章Python教程请查看:python变量类型学习笔记总结
操作符是可以操作操作数值的结构,这一章我们讨论python所有的操作符及其用法。
考虑表达式4 + 5 = 9,在这里4和5被称为操作数,而+被称为操作符。
1、操作符的类型
Python语言支持以下类型的操作符。
- 算术运算符
- 比较(关系)操作符
- 赋值操作符
- 逻辑运算符
- 按位运算符
- 成员操作符
- 标识符
让我们逐一看看所有的操作符以及对应的用法。
2、Python算术运算符
下表是python的所有可用算术运算操作符:
操作符 | 描述 | 例子 |
+ 加法 | 添加值两侧的操作符。 | a + b = 30 |
– 减法 | 从左操作数减去右操作数。 | a – b = -10 |
* 乘法 | 将操作符两边的数进行相乘 | a * b = 200 |
/ 除法 | 用右操作数除左操作数 | b / a = 2 |
% 取模 | 将左操作数除以右操作数,返回余数 | b % a = 0 |
**指数 | 执行指数(幂)计算操作符 | a**b =10的20次方 |
// | 底数除法——操作数的除法,其结果是小数点后的数字被除去的商。但是如果其中一个操作数是负的,则结果为负,也就是从零到负无穷四舍五入 | 9//2 = 4 and 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0 |
下面是python算法运算符的用法:
#!/usr/bin/python
a = 21
b = 10
c = 0
c = a + b
print "c = a + b: ", c
c = a - b
print "c = a – b: ", c
c = a * b
print "c = a * b: ", c
c = a / b
print "c = a / b: ", c
c = a % b
print "c = a % b: ", c
a = 2
b = 3
c = a**b
print "c = a**b: ", c
a = 10
b = 5
c = a//b
print "c = a//b: ", c
3、Python比较运算符
这些操作符比较它们两边的值,并确定它们之间的关系,它们也被称为关系运算符。
下表是python的所有比较运算符及其使用示例。
操作符 | 描述 | 例子 |
== | 如果两个操作数的值相等,则条件为真。 | (a == b) is not true. |
!= | 如果两个操作数的值不相等,则条件为真。 | (a != b) is true. |
<> | 如果两个操作数的值不相等,则条件为真。 | (a <> b) is true.和 != 操作符类似. |
> | 如果左操作数的值大于右操作数的值,则条件为真。 | (a > b) is not true. |
< | 如果左操作数的值小于右操作数的值,则条件为真。 | (a < b) is true. |
>= | 如果左操作数的值大于或等于右操作数的值,则条件为真。 | (a >= b) is not true. |
<= | 如果左操作数的值小于或等于右操作数的值,则条件为真。 | (a <= b) is true. |
下面是使用python比较运算符的例子。
#!/usr/bin/python
a = 21
b = 10
c = 0
if ( a == b ):
print "a == b"
else:
print "a != b"
if ( a != b ):
print "a != b"
else:
print "a == b"
if ( a <> b ):
print "a != b"
else:
print "a == b"
if ( a < b ):
print "a < b"
else:
print "a >= b"
if ( a > b ):
print "a > b"
else:
print "a <= b"
a = 5;
b = 20;
if ( a <= b ):
print "a <= b"
else:
print "a > b"
if ( b >= a ):
print "b >= a"
else:
print "b < a"
4、Python赋值操作符
下表是python的所有赋值操作符以及响应的示例。
操作符 | 描述 | 例子 |
= | 将右侧操作数的值赋给左侧操作数 | c = a + b将a + b的值赋给c |
+= | 它将右操作数添加到左操作数并将结果分配给左操作数 | c += a等价于c = c + a |
-= | 它从左操作数中减去右操作数并将结果赋给左操作数 | c -= a等价于c = c – a |
*= | 它将右操作数与左操作数相乘,并将结果赋给左操作数 | c *= a等价于c = c * a |
/= | 它将左操作数与右操作数分开,并将结果分配给左操作数 | c /= a等价于c = c / ac /= a等价于c = c / a |
%= | 它使用两个操作数取模并将结果赋给左操作数 | c %= a等价于c = c % a |
**= | 执行指数(幂)计算操作符和赋值左操作数 | c **= a等价于c = c ** a |
//= | 它对操作符进行层划分,并为左操作数赋值 | c //= a等价于c = c // a |
下面是使用python赋值操作符的例子
#!/usr/bin/python
a = 21
b = 10
c = 0
c = a + b
print "a + b: ", c
c += a
print "c += a: ", c
c *= a
print "c *= a: ", c
c /= a
print "c /= a: ", c
c = 2
c %= a
print "c %= a: ", c
c **= a
print "c **= a: ", c
c //= a
print "c //= a: ", c
5、Python按位运算符
按位运算符处理位,假设a = 60;b = 13;在二进制格式中,它们是这样的:
a = 0011 1100
b = 0000 1101
—————–
a&b = 0000 1100
a|b = 0011 1101
a^b = 00110001
~a = 1100 0011
Python语言支持以下位操作符:
操作符 | 描述 | 例子 |
& 二进制与 | 如果结果在两个操作数中都存在,则运算符将向结果复制一位 | (a & b) (即 0000 1100) |
| 二进制或 | 如果它存在于任何一个操作数中,它就会复制一位。 | (a | b) = 61 (即 0011 1101) |
^二进制XOR | 如果在一个操作数中设置了位,而不是两个操作数都设置了位,那么它将复制该位。 | (a ^ b) = 49 (表示 0011 0001) |
~二进制补码 | 它是一元的,具有“翻转”位的效果。 | (~a) = -61(表示2的补码形式1100 0011,由于是带符号的二进制数。 |
<<二进制左移 | 左操作数值由右操作数指定的位数向左移动。 | a << 2 = 240 (即 1111 0000) |
>>二进制右移 | 左操作数值按右操作数指定的位数右移。 | a >> 2 = 15 (即 0000 1111) |
下面是使用python按位运算符的实例。
#!/usr/bin/python
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print "行 1 – c的值: ", c
c = a | b; # 61 = 0011 1101
print "行 2 - C的值: ", c
c = a ^ b; # 49 = 0011 0001
print "行 3 - C的值: ", c
c = ~a; # -61 = 1100 0011
print "行 4 - C的值: ", c
c = a << 2; # 240 = 1111 0000
print "行 5 - C的值: ", c
c = a >> 2; # 15 = 0000 1111
print "行 6 - C的值: ", c
6、Python逻辑运算符
Python语言支持以下逻辑操作符。假设变量a=10;b=20。
操作符 | 描述 | 例子 |
与逻辑and | 如果两个操作数都为真,则条件为真。 | (a and b) is true. |
或逻辑or | 如果两个操作数中有一个非零,则条件为真。 | (a or b) is true. |
非逻辑not | 用于反转其操作数的逻辑状态。 | Not(a and b) is false. |
7、Python成员操作符
Python的成员资格操作符测试序列中的成员资格,如字符串、列表或元组。有两种成员运算符,如下所述
操作符 | 描述 | 例子 |
in | 如果在指定的序列中找到一个变量,则计算为true,否则为false。 | x在y中,如果x是序列y中的一个元素,结果就是1。 |
not in | 如果没有找到指定序列中的变量,则计算为true,否则为false。 | x不在y中,如果x不在序列y中,那么结果就是1。 |
下面使用成员操作符的例子。
#!/usr/bin/python
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print "行 1 - a在给定的列表中可用"
else:
print "行 1 - a在给定的列表中不可用"
if ( b not in list ):
print "行 2 - b在给定的列表中不可用"
else:
print "行 2 - b在给定的列表中可用"
a = 2
if ( a in list ):
print "行 3 - a在给定的列表中可用"
else:
print "行 3 - a在给定的列表中不可用"
8、Python标识符
标识符比较两个对象的内存位置,这里有两个恒等算子。
操作符 | 描述 | 例子 |
is | 如果操作符两边的变量指向相同的对象,则计算结果为true,否则为false。 | x是y,这是结果1,如果id(x)等于id(y) |
is not | 如果操作符两边的变量指向相同的对象,则为false,否则为true。 | 如果id(x)不等于id(y)那么x不等于1。 |
#!/usr/bin/python
a = 20
b = 20
if ( a is b ):
print "行 1 - a和b具有相同的恒等式"
else:
print "行 1 - a和b没有相同的恒等式"
if ( id(a) == id(b) ):
print "行 2 - a和b具有相同的恒等式"
else:
print "行 2 - a和b没有相同的恒等式"
b = 30
if ( a is b ):
print "行 3 - a和b具有相同的恒等式"
else:
print "行 3 - a和b没有相同的恒等式"
if ( a is not b ):
print "行 4 - a和b没有相同的恒等式"
else:
print "行 4 - a和b具有相同的恒等式"
9、Python运算符优先级
下表列出了从最高优先级到最低优先级的所有操作符。
编号 | 操作符 & 描述 |
1 | ** 取幂 |
2 | ~ + – 补码、一元加减码(后两个方法名是+@和-@) |
3 | * / % // 乘法、除法、乘除和向下除法 |
4 | + – 加法和减法 |
5 | >> << 左右逐位移位 |
6 | & 按位”and“ |
7 | ^ | 按位或 |
8 | <= < > >= 比较操作符 |
9 | <> == != 相等操作 |
10 | = %= /= //= -= += *= **= 赋值操作符 |
11 | is is not 标识符 |
12 | in not in 成员操作符 |
13 | not or and 逻辑操作符 |
评论前必须登录!
注册