Python 运算符
我们将在这一节里介绍 Python 运算符的相关知识。
运算符是对操作数 (值或变量) 执行特定操作的特殊符号, 例如, 在 a + b
中, +
是操作变量 a 和 b 的运算符, 这些变量称为操作数。
下面是 Python 运算符的一些类型:
Python 算术运算符
算术运算符对变量进行加法、减法、乘法等算术运算的运算符。
以下表格列出了 Python 算术运算符以及示例:
运算符 | 描述 | 例子 |
---|---|---|
+ |
加法运算 | a + b , +a |
- |
减法运算 | a - b , -a |
* |
乘法运算 | a * b |
/ |
除法运算,结果总是返回浮点类型。 | a / b |
% |
求余运算 | a % b |
// |
取整除,结果返回舍去小数部分的整数 | a // b |
** |
幂运算,返回 x 的 y 次方 | a ** b |
Python 算术运算符实例
下面的代码中是, 算术运算符用于两个操作数的例子:
a = 24
b = 7
print('a + b =', a+b)
print('a - b =', a-b)
print('a * b =', a*b)
print('a / b =', a/b)
print('a // b =', a//b)
print('a ** b =', a**b)
a + b = 31
a - b = 17
a * b = 168
a / b = 3.4285714285714284
a // b = 3
a ** b = 4586471424
Python 比较运算符
比较运算符是用来比较两个值大小的运算符,运算符的结果是二选一,True
或是 False
。
下面列举出 Python 中的比较运算符:
运算符 | 描述 | 例子 |
---|---|---|
> |
大于 - 比较 a 是否大于 b |
a > b |
< |
等于 - 比较 a 是否小于 b |
a < b |
== |
等于 - 比较两变量是否相等 | a == b |
!= |
不等于 - 比较两变量是否不相等 | a != b |
>= |
大于等于 - 比较 a 是否大于或等于 b |
a >= b |
<= |
小于等于 - 比较 a 是否小于或等于 b |
a <= b |
Python 比较运算符实例
下面举例来说明 Python 比较运算符的应用。
a = 12
b = 24
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 False
a < b is True
a == b is False
a != b is True
a >= b is False
a <= b is True
Python 逻辑运算符
运算符 | 描述 | 例子 |
---|---|---|
and |
与运算 - 如果两侧逻辑都为 True ,则结果为 True ,否则为 False |
a and b |
or |
或运算 - 如果两侧逻辑有一个为 True ,则结果为 True ,否则为 False |
a or b |
not |
非运算 - 如果 a 为 True ,返回 False ; 如果 a 为 False ,返回 True |
not a |
Python 逻辑运算符实例
下面举例来说明 Python 逻辑运算符的具体应用。
a = False
b = True
print('a and b =', a and b)
print('a or b =', a or b)
print('not b =', not b)
a and b = False
a or b = True
not b = False
Python 位运算符
Python 位运算符执行位运算,其中的操作数是执行位运算的二进制数字。
下面列出来 Python 中所有的位运算符,为了方便说明,我们取 a = 4
(0b100
) 以及 b = 5
(0b101
):
运算符 | 描述 | 例子 |
---|---|---|
& |
位与操作符 - 当两侧数字在该位上都是 1 的时候,结果该位也为 1 ,否则为 0 |
a &b = 4 |
| |
位或操作符 - 当两侧数字在该位上只要有一个是 1 的时候,结果该位为 1 ,否则为 0 |
a | b = 5 |
~ |
位取反操作符 - 对操作数进行按位取反操作,1 变成 0 ,0 变成 1 |
~a = -5 |
^ |
位异或操作符 - 当两侧数字对应位二进制相异时,结果为 1 |
a^b= 1 |
>> |
右移操作符 - 将 >> 左侧的数字右移若干位,左侧补齐 0 |
a >>2= 1 |
<< |
左移操作符 - 将 >> 左侧的数字左移若干位,右侧补 0 ,左侧高位数舍弃 |
a<< 2 =16 |
Python 赋值运算符
赋值运算符 =
为变量分配数值。赋值运算符对变量进行初始化,比如 x = 1
将数值 1
赋值给变量 x
。
在 Python 中, 有复合赋值运算符, 它们是将算术运算符和赋值运算符相组合, 或者是将按位和赋值运算符相组合。
比如,x += 2
就是一个复合赋值语句, 其中 2 与变量 x
相加, 结果存储在变量 x
中。
下面是赋值运算符以及复合赋值运算符的列表。
运算符 | 例子 | 等效于 |
---|---|---|
= |
a = 8 |
a = 8 |
+= |
a += 8 |
a = a + 8 |
-= |
a -= 8 |
a = a - 8 |
*= |
a *= 8 |
a = a * 8 |
/= |
a /= 8 |
a = a / 8 |
%= |
a %= 8 |
a = a % 8 |
/= |
a /= 8 |
a = a / 8 |
*= |
a *= 8 |
a = a * 8 |
&= |
a &= 8 |
a = a & 8 |
` | =` | `a |
^= |
a ^= 8 |
a = a ^ 8 |
>>= |
a >>= 8 |
a = a >> 8 |
<<= |
a <<= 8 |
a = a << 8 |
Python 特殊运算符
在 Python 编程中, 有一些运算符具有特殊的含义, 称为特殊运算符, 例如身份运算符以及成员运算符等。In Python
身份运算符
在 Python 中, 运算符 is
和 is not
被称为身份运算符。身份运算符用于确定两个变量是否是内存的同一部分。所以两个变量是相等的, 两个变量是相同的是两个不同的语句。两个变量假如具有相同的数值,那它们两个数值相等,但并不是同一个 Python 对象。
运算符 | 描述 |
---|---|
is |
两个变量具有相同的内存位置 |
is not |
两个变量不是指向相同的内存位置 |
Python 身份运算符实例
下面具体来说明下 Python 身份运算符的含义,
>>> a = [1]
>>> b = [1]
>>> c = a
>>> a is b
False
>>> a is c
True
a
和 b
虽然具有相同的数据,都是列表 [1]
,但它们指向的不是同一个内存对象,所以 a is not b
。但 c=a
将 a
的内存地址赋予了 c
的内存地址,所有它们指向了同一个 Python 对象,所以 a is c
是成立的。你可以用 id(x)
内置函数来具体查看变量的内存地址
>>> id(a), id(b), id(c)
(87402760L, 87404296L, 87402760L)
从结果也能看出来,a
和 c
具有相同的内存地址,并且同 b
不同。
Python 成员运算符
在 Python 中,运算符 in
和 not in
被称为成员运算符。成员运算符用于检查变量是否位于序列(列表,元组,字符串和字典)中。所以两个变量相等并且两个变量相同是两个不同的语句。
对 Python 字典进行运算符操作的时候,它只能检查字典中的键,而不是检查值。
运算符 | 描述 |
---|---|
in |
当 in 前面的变量在后面的序列中时,结果为 True |
not in |
当 in 前面的变量不在后面的序列中时,结果为 True |
Python 成员运算符实例
>>> a = 'Python Programming'
>>> print('y' in a)
True
>>> print('b' not in a)
True
>>> print('b' in a)
False
>>> x = {1:2;3:4}
>>> 1 in a
True
>>> 2 in a
False
y
存在于序列 a
(字符串)中,因此 y in a
返回 True。类似地,b
不存在 a
中,所以返回 False
。
字典 x
具有两个键 1
和 3
,它们的值分别是 2
和 4
。1
是字典的键,所以 1 in a
成立;虽然 2
是字典中某个键的值,但并不是键,所以 2 in a
并不成立。
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn