运算符(二)
2018-10-02 本文已影响17人
5f2a6061653d
位运算符
位运算符是指对二进制位从低位到高位对齐后进行运算,具体如下表所示。
运算符 | 说明 | 示例 | 结果 |
---|---|---|---|
& | 按位与 | a & b | a与b对应二进制的每一位进行与操作后的结果 |
| | 按位或 | a | b| a与b对应二进制的每一位进行或操作后的结果 |
^ | 按位异或 | a ^ b | a与b对应二进制的每一位进行异或操作后的结果 |
~ | 按位取反 | ~a | a对应二进制的每一位进行非操作后的结果 |
<< | 向左移位 | a << b | 将a对应二进制的每一位左移b位,右边移空的部分补0 |
>> | 向右移位 | a >> b | 将a对应二进制的每一位右移b位,左边移空的部分补0 |
虽然运用位运算可以完成一些底层的系统程序设计,但Python程序很少参与到计算机底层的技术,因此这里只需了解位运算即可。
接下来以示例的方式讲解位运算符的使用,具体如下所示:
a, b = 6, 10
print(bin(a)) # 二进制形式110
print(bin(b)) # 二进制形式1010
print(bin(a & b))
print(bin(a | b))
print(bin(a ^ b))
print(bin(~a))
print(bin(a << 2))
print(bin(a >> 2))
运行结果如下图所示。
位运算符.jpg在上述示例中,通过print()函数输出每个位运算符参与表达式的值,bin()的作用是将数据转换为二进制形式。
成员运算符
成员运算符用于判断指定序列中是否包含某个值,具体如下表所示。
运算符 | 说明 |
---|---|
in | 如果在指定序列中找到值,则返回True,否则返回False |
not in | 如果在指定序列中找到值,则返回False,否则返回True |
接下来以示例的方式讲解成员运算符的使用,具体如下所示:
A = [2, 4, 6, 8] # 列表
print(2 in A)
print(3 in A)
print(2 not in A)
print(3 not in A)
运行结果如下图所示。
成员运算符.jpg
在上述示例中,通过print()函数输出每个成员运算符参与表达式的值。
身份运算符
身份运算符用于判断两个标识符是否引用同一对象,具体如下表所示。
运算符 | 说明 |
---|---|
is | 如果两个标识符引用同一对象,则返回True,否则返回False |
is not | 如果两个标识符引用同一对象,则返回False,否则返回True |
接下来以示例的方式讲解身份运算符的使用,具体如下所示:
a = b = 8 # a、b都为8
print(a is b)
print(a is not b)
b = 18 # b修改为18
print(a is b)
print(a is not b)
运行结果如下图所示。
身份运算符.jpg
在上述示例中,通过print()函数输出每个身份运算符参与表达式的值。
运算符的优先级
运算符的优先级是指在多种运算符参与运算的表达式中优先计算哪个运算符,与算术运算中“先乘除,后加减”是一样的。如果运算符的优先级相同,则根据结合方向进行计算,下表列出了运算符从高到低优先级的顺序。
运算符 | 说明 |
---|---|
** | 幂 |
~ | 按位取反 |
*、/、%、// | 乘、除、取余、取整 |
+、- | 加、减 |
<<、>> | 左移、右移 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
<=、<、>、>=、==、!= | 比较运算符 |
=、%=、/=、//=、=、*=、+=、-+ | 赋值运算符 |
is、is not | 身份运算符 |
in、not in | 成员运算符 |
not | 非运算符 |
and | 与运算符 |
or | 或运算符 |
Python会根据上表中运算符的优先级确定表达式的求值顺序,同时还可以使用小括号“()”来控制运算顺序,任何小括号内的运算将最先计算,因此在程序开发中,不需要刻意记忆运算符的优先级顺序,而是通过小括号来改变优先级以达到目标。