---- 数据类型的强制转换 ----
包括数字类型( int , float , bool , complex )和容器类型( str , list , tuple , set , dict )
数值类型的强制转换
可以强制转换成 int 类型的有:浮点型 , 布尔型 , 纯数字字符串
可以强制转换成 float 类型的有: 整型 , 布尔型 , 纯数字字符串
可以强制转换成 bool 类型的有: 整型 , 浮点型 , 复数 , 纯数字字符串
可以强制转换成 complex 类型的有: 整型 , 浮点型 , 布尔型 , 纯数字字符串
注: 强转成 bool 类型是 False 的十种情况:
0 , False , o.o , oj , ‘’ , [] , () , set() , {} , None
容器类型的强制转换
可以转换成 str 类型的有: 列表 , 元组 , 集合 , 字典
可以转换成 list类型的有: 字符 , 元组 , 集合 , 字典
可以转换成 tuple类型的有: 字符 , 列表 , 集合 , 字典
可以转换成 set类型的有: 字符, 元组
可以转换成 dict类型的有: 字符 , 列表 , 元组 , 集合
注:
(1) 强制转换的时候依然要遵循不可哈希类型不能嵌套或转化不可哈希类型的原则
(2) 强制转换时,字典只会保存键,舍弃对应的值
(3) 字典的键只能是可哈希的数据,对应的值没用要求
(4) 强制转换时,两者的原则都应该被遵循
(5) 等长二级容器 : 每一个容器元素的个数是一样的,如 listvar = [(1,2,3),(4,5,6)]
---- 变量的缓存机制 ----
缓存机制就是,在一定范围内,相同值的内存地址是一致的
数值类型的缓存
int整型 : -5 ~正无穷
float 浮点型 : 非负数
bool布尔型 : 值相同
complex复数 : 只有虚数部分且相同
容器类型的缓存
str 字符型 : 相同字符
list , tuple , set , dict : 都不一样
---- 运算符 ----
(1)运算符的优先级
Lambda #运算优先级最低
逻辑运算符: or
逻辑运算符: and
逻辑运算符:not
成员测试: in, not in
同一性测试: is, is not
比较: <,<=,>,>=,!=,==
按位或: |
按位异或: ^
按位与: &
移位: << ,>>
加法与减法: + ,-
乘法、除法与取余: *, / ,%
正负号: +x,-x
(2)逻辑短路
两种情况:
res = False and 布尔值
res = True or 布尔值
(3)or 短路 ( 不考虑and和or的优先级问题 )
True or ...
(4)数据类型的判断
isinstance( 要判断的数据,要判断的类型 ) 要么返回真,要么返回假
isinstance( 要判断的数据,(元组,放上各种类型,满足一个条件即为真 ))
注:
#print函数会返回一个None
7 % -3 = -2
-7 % 3 = 2