运算符号
- 算术运算符:
+
、-
、*
、/
、//
、%
、**
- 赋值运算符:
=
、+=
、*=
、/=
、%=
、**=
、//=
- 比较(关系)运算符:
==
、!=
、>
、<
、>=
、<=
- 逻辑运算符:
and
、or
、not
- 成员运算符:
in
、not in
- 身份运算符:
is
、is not
- 位运算符:
&
、|
、^
、~
、<<
、>>
算术运算符
1 | 'Hello'+' world' |
赋值运算符
先做运算再赋值。
注:python 中变量不需要定义,因此 c=1
表示赋值
1 | c+=1 |
比较(关系)运算符
比较两组数据类型是否相等,结果为布尔值。
不只是数字才能做比较运算
1 | b = 1 |
逻辑运算符
逻辑运算符:and
、or
、not
,主要操作对象为布尔类型,返回结果也为布尔类型
and
表示且,如果两个均为 True,才返回 True,否则返回Falseor
表示或,任意一个为 True,返回 True。只有两个均为 False,才返回 False。not
取反。
1 | 1 and 1 |
非布尔类型的转换
由于很少直接把变量设置为布尔类型,因此在大多数为非布尔类型的变量运算中,遵循如下法则:
- 整数和浮点数:0表示False,非0为True
- 字符串:空字符串为False,非空字符串为True
- 列表:空列表为False,非空列表为True
- 元组、集合、字典:同列表
划重点:
- 被判定为False的值:
False
,0
,''
,[]
,{}
,()
- 逻辑运算符的返回结果可以用非布尔类型表示,结果显示为非布尔类型
or和and返回值的规律
1 | [] or [1] |
计算返回的结果,是当计算机解析出结果时的值。以0和1为例,当0 and 1
时,0已经可以判断出返回结果为False,因此返回结果为0。而当1 and 0
时,只有当判断到0时,才能判定为结果为False,因此返回的值仍然是0。
成员运算符
成员运算符包括:in
、not in
用于判断一个元素是否在另外一组元素里,返回值为布尔类型。
适用于列表、字符、元组、集合和字典
1 | a1 = 1 |
注:字典的成员运算符是针对 key 进行判断的,而非 value
身份运算符
身份运算符包括:is
、is not
身份运算的返回类型为布尔值,与关系运算符的区别:
not is
:两个变量身份不同时返回Trueis
:两个变量身份,即id()
(内存地址)相等时返回True==
:两个变量取值相等时返回True
1 | a = 1 |
对象的三大特征:值、类型和身份
补充:类型的判断 isinstance
第一个参数:变量
第二个参数:变量类型
注:第二个参数可接受元组,当满足元组中任意一种,则返回True
1 | a = 1 |
为什么不推荐使用 type()
进行类型判断?
答:无法判断对象的子类型是否属于该类型
位运算符
位运算符:把数字当作二进制数进行运算
&
:按位与:|
:按位或^
:按位异或~
:按位取反<<
:左移动>>
:右移动
1 | a = 2 |