运算符
算数运算符
因为是整数,所以也可以进行数学中的基本运算。 使用算术运算符号,用来处理四则运算。
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 10 + 20 = 30 |
- | 减 | 10 - 20 = 10 |
* | 乘 | 10 * 20 = 200 |
/ | 除 | 10 / 20 = 0.5 |
// | 取整除 | 返回除法的整数部分(商) 9 // 2 输出结果 4 |
% | 取余数 | 返回除法的余数 9 % 2 = 1 |
** | 幂 | 又称次方、乘方,2 ** 3 = 8 |
python
>>> 9 % 4 # 取余
1
>>> 9 % 3
0
>>> 2 ** 3
8
除此之外,+
还可以作为字符串(包括后续要介绍的序列)的连接运算符。
python
>>> s1 = 'Hello, '
>>> s2 = 'Charlie'
>>> # 使用 + 连接两个字符串
>>> print(s1 + s2)
Hello, Charlie
赋值运算符
以下假设变量 a
为 10
,变量 b
为 20
:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | 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 / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
案例
python
# 算术运行
two = 2
four = 4
# 加减乘除
print(two + four)
print(two - four)
print(two * four)
print(two / four)
# 取整、取余、取幂
print(two // four)
print(two % four)
print(two ** four)
# %% 赋值运算
two += two
print(two)
two -= two
print(two)
two *= two
print(two)
two /= four
print(two)
比较运算符
运算符 | 功能 |
---|---|
> | 大于,如果运算符前面的值大于后面的值,则返回 True ;否则返回 False |
>= | 大于或等于,如果运算符前面的值大于或等于后面的值,则返回 True ;否则返回 False |
< | 小于,如果运算符前面的值小于后面的值,则返回 True ;否则返回 False |
<= | 小于或等于,如果运算符前面的值小于或等于后面的值,则返回 True ;否则返回 False |
== | 等于,如果运算符前面的值等于后面的值,则返回 True ;否则返回 False |
!= | 不等于,如果运算符前面的值不等于后面的值,则返回 True ;否则返回 False |
逻辑运算符
Python 语言支持逻辑运算符,以下假设变量 a 为 10, b 为 20:
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" ,两个条件都满足 | (a and b) 返回 20。 |
or | x or y | 布尔"或",两个条件中满足一个 | (a or b) 返回 10。 |
not | not x | 布尔"非" ,否定之前的结果 | not(a and b) 返回 False |
逻辑运算符案例:
python
x = 1
y = 0
print(x and y)
print(x or y)
print(not x)
print(not y)
# 案例升级
x = 3 > 4
y = 5 > 4
成员运算符
in
和 not in
被称为 成员运算符
成员运算符用于 测试 序列中是否包含指定的 成员
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False | '3' in '123' 返回 True |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False | '3' not in '123' 返回 False |
python
>>> '3' in '123'
True
>>> '3' not in '123'
False
身份运算符
is
比较的是 两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同 。莱布尼茨说过:“世界上没有两片完全相同的叶子”,这个 is
正是这样的比较,比较是不是同一片叶子(即比较的 id
是否相同,这 id
类似于人的身份证标识)。
身份运算符用于比较两个对象的存储单元
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y , 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True ,否则返回 False |
id() 函数用于获取对象内存地址。
身份运算符案例:
python
>>> zhengxin = ['正心', 'M', 18]
>>> zhengxin2 = ['正心', 'M', 18]
>>> zhengxin == zhengxin2
True
>>> zhengxin is zhengxin2
False
>>> id(zhengxin),id(zhengxin2)
(2398966201152, 2398966187456)
警告
小数字不能使用 is
进行判断,因为 python 内部有 内存驻留
机制,相同的小数字会引用同一个对象。
python
>>> num = 1
>>> num2 = 1
>>> num is num2
True
>>> id(num), id(num2)
(2398960943344, 2398960943344)
>>> num2 = 1111111111111111111111111111111111111111111111111111111111111111111111111
>>> num3 = 1111111111111111111111111111111111111111111111111111111111111111111111111
>>> num2 is num3
False
>>> id(num2), id(num3)
(2398968822064, 2398968822192)
字符串不适用 内存驻留
机制
python
>>> name = '正心'
>>> name2 = '正心'
>>> name == name2
True
>>> name is name2
False
>>> id(name), id(name2)
(2398966638960, 2398961922480)
运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
* / % // | 乘,除,取模和取整除 |
& | 位 'AND' |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
案例:运算符优先级
python
r = 4 > 2 ** 4 or True is 1 and '4' in "345"
if r:
print('猜猜我的结果', r)
else:
print('猜猜我的结果', r)