1. Number 数字类型的强制类型转换

# 我们先定义几个数字类型的变量 			var1 = 24 			var2 = 3.14 			var3 = True 			var4 = 5-8j 			var5 = "4399" 			var6 = "abcf1234" 			 # 1.int 强制转换成整型 			res = int(var2) # 24 			res = int(var3) # False => 0 True => 1 			# res = int(var4) error 			res = int(var5) # 4399 			# res = int(var6) error 			print(res , type(res)) 			 # 2.float 强制转换成浮点型 			res = float(var1) # 24.0 			res = float(var3) # True => 1.0 False => 0.0 			res = float(var5) # 4399.0 			print(res , type(res)) 			 # 3.complex 强制转换成复数 			res = complex(var1) # 24 + 0j 			res = complex(var2) # 3.14 + 0j 			res = complex(var3) # False => 0j True => 1+0j 			res = complex(var5) # 4399 + 0j 			# res = complex(var6) error 			print(res , type(res)) 			 # 4.bool 强制转换成布尔型 	""" 	bool类型为假的十种情况 	0 , 0.0 , 0j , False , '' , [] , () , set() , {} , None 	""" 	# None 是python的关键字,代表空的,什么也没有,一般用来做初始化操作, eg. a1 = None , b1 = None 			res = bool(None)	 			print(res , type(res)) 			 	""" 	总结: 		int() float() bool() complex() 		默认创建一个该数据类型的值 		res = int()  		res = float() 		res = bool() 		res = complex() 		print(res) 	""" 

2. Number 数字类型的自动类型转换

转换规则 => 默认精度从低到高进行转换: bool -> int -> float -> complex

# 1.bool + int             res =True + 100 # 1 + 100             print(res) 		 # 2.bool + float             res = True + 3.14 # 1.0 + 3.14             print(res)  # 3.bool + complex             res = False + 5-2j # 0j + 5-2j             res = True + 5-2j  # 1+0j + 5-2j             print(res)  # 4.int + float             res = 5 + 3.14 # 5.0 + 3.14             print(res) 		 # 5.int + complex             res = 20 + 5-2j # 20+0j + 5-2j             print(res) 		 # 6. float + complex             res = 3.14 + 20-9j # 3.14+0j + 20-9j             print(res) 

3. 容器类型数据的强制转换

# 我们先定义几个容器类型数据的变量: 		strvar = '红灯停绿灯行' 		listvar = ["张飞","李逵","王瑶"] 		tuplevar = ("小明","小红","小花","小东") 		setvar = {"大喷子","大棍子","大背头"} # 推荐使用变量命名的字符串作为字典的键 		dictvar = {"aaa":123,"bbb":321,"dpz":"巧舌如簧","dgz":"刚正不阿","dbt":"文武双全"} 		intvar = 6666 

1. str 字符串: 强制转换成字符串

# str 字符串对容器类型数据和数字类型数据都可以转换 # 特点: 强制转换成字符串,就是在原有数据的基础上两边套上引号 			res = str(listvar) 			res = str(intvar) 			print(res , typr(res))		 # repr: 可以原型化输出字符串,不转义字符(显示出引号) 			print(repr(res)) 

2. list 列表: 强制转换成列表

# 特点: #	如果是字符串,会把每一个字符单独的作为一个元素放到列表中 #	如果是字典,只保留键,形成一套新的列表 #	如果是其他容器,值是单纯的在原有数据基础上换上[] 			res = list(strvar) 			res = list(tuplevar) 			res = list(setvar) 			res = list(dictvar) 			print(res , type(res)) 

3. tuple 元组: 强制转换成元组

# 注意点: 逗号是区分是否是元组的标识符 # 特点: #	如果是字符串,会把每一个字符单独的作为一个元素放到元组中 #	如果是字典,只保留键,形成一套新的元组 #	如果是其他容器,值是单纯的在原有数据基础上换上() 			res = tuple(strvar) 			res = tuple(listvar) 			res = tuple(setvar) 			res = tuple(dictvar) 			print(res , typr(res)) 

4. set 集合: 强制转换成集合

# 注意点: 集合无序,且自动去重 # 特点: #	如果是字符串,会把每一个字符单独的作为一个元素放到集合中 #	如果是字典,只保留键,形成一套新的集合 #	如果是其他容器,值是单纯的在原有数据基础上换上{} 			res = set(strvar) 			res = set(listvar) 			res = set(tuplevar) 			res = set(dictvar) 			print(res , type(res)) 			 # 练习:去掉列表中所有重复的数据 			lst =['a','b','c','f','a','c','d',111,123] # 表达方式1 			res = set(lst) 			print(res) 			res = list(res) 			print(res) # 表达方式2 			res = list( set(lst) ) 			print(res) 

5. dict 字典: 强制转换成字典

# 特点: 字典强制转换时,必须是等长的二级容器,并且容器里面的元素个数是两个  # 二级容器 (list tuple set dict)  # 等长的二级容器 : 里面的元素都是容器,并且容器里面的元素个数都相同 			lst = [(1,2,3),[4,5,6]] 			lst = [(99,88),(77,66)] # 二级列表 list 			lst = [1,2,[3,4]] # 二级元组 tuple 			tup = (5,6,7,(8,9,10)) # 二级集合 (集合中元素的数据类型要求: int bool float complex str tuple) 			setvar = {11,12,13,(14,15,16)} # 二级字典 (字典中的键的数据类型要求: int bool float complex str tuple) 			dic = {"a":1,"b":{"c":2,"d":3}} # 练习1: 获取'3'这个元素 			res1 = dic["b"] 			print(res1) # {"c":2,"d":3} 			res2 = res1["d"] 			print(res2) # 简写 			res = dic["b"]["d"] 			print(res) # 练习2: 获取'Hello' 	container = [1,2,(3,4,{"a":11,"b":{"c":22,"d":[33,44,"Hello"]}})] # 五级容器 			res1 = container[-1] 			print(res1) 			res2 = res1[-1] 			print(res2) 			res3 = res2["b"] 			print(res3) 			res4 = res3["d"] 			print(res4) 			res5 = res4[-1] 			print(res5) # 简写 			res = container[-1][-1]["b"]["d"][-1] 			print(res) 			 # 强制转换成字典  # 1.外层是列表/元组/集合,里面的容器是列表/元组 			lst = [("a",1),["b",2]] 			tup = (("c",3),["d",4]) 			setvar = {(5,6),[7,8],("f1",1),["f2",2]} 			res = dict(lst) # {"a":1,"b":2} 			res = dict(tup) # {"c":3,"d":4} 			res = dict(setvar) # {6:5,7:8,"f1":1,"f2":2}  			# 因为集合无序,虽然语法上允许,但不符合定义的本意,不推荐使用 			print(res) # 2. 如果使用字符串,语法是哪个正确,但有局限性 			lst = [("q",1),"p8"] # 字符串长度只能是2个 #			lst = [("q",1),"p88"] error 			print( dict(lst) ) # 总结: #	str() list() tuple() set() dict() #	默认创建一个该数据类型的值 

4. 变量的缓存机制 (仅对python3.6版本负责)

python3.7 和 python3.8 的缓存机制 : 只要两个值相同,就之开辟一个空间

1. Number 数字类型数据

# 1. int 对于整型而言, -5 ~ 正无穷范围内的相同值 id一致 			var1 = 111 			var2 = 222 			var3 = -6 			var4 = -6 			var5 = var6 = -100 # 相同的地址 			print(id(var1) , id(var2)) 			print(id(var3) , id(var4)) 			print(id(var5) , id(var6)) # 2. float 对应浮点型而言, 非负数范围内的相同值 id一致 			var1 = 3.14 			var2 = 3.14 			var3 = -3.14 			var4 = -3.14 			print(id(var1) , id(var2)) 			print(id(var3) , id(var4)) # 3. bool 对应布尔型而言,值相同的情况下 id一致 			var1 = True 			var2 = False 			print(id(var1) , id(var2)) # 4. complex 复数 : 实数 + 虚数 => 这样的结构中 id永不相同 (只有虚数的情况例外) 			var1 = 3+4j 			var2 = 3+4j 			var3 = 21j 			var4 = 21j 			print(id(var1) , id(var2)) 			print(id(var3) , id(var4)) 

2. 容器类型数据

# 1. 字符串 和 空元组 相同的情况下,地址相同 			var1 = "三叉戟" 			var2 = "三叉戟" 			var3 = () 			var4 = () 			print(id(var1) , id(var2)) 			print(id(var3) , id(var4)) # 2. 列表,元组,字典,集合无论什么情况 id都不相同 (空元组除外) 			var1 = (1,2,3) 			var2 = (1,2,3) 			print(id(var1) , id(var2))