python3中有六个标准的数据类型:Number(数字)String(字符串)List(列表) Tuple(元组) Set(集合)Dictionary(字典)
下面我们就用几天的时间分别来对每一种数据类型进行剖析
Number类型
Python3中Number类型支持 int(整型)、float(浮点型)、bool(布尔类型)、complex(复数)
1、 基本写法
# 整型
num = 1
# 浮点型
num1 = 3.12
# 布尔类型:判断是个事件的真假,真为True假为False
bool1 = True
print(5 > 4)#输出 True
print(3 < 1)#输出 False
2、 bool 是 int 的子类,True 和 False 可以和数字相加
num1 = 12
bool1 = True
bool2 = False
print(num1 + bool1)#13
print(num1 + bool2)#12
3、当判断 True==1、False==0 时会返回 True
num1 = 1
num2 = 0
bool1 = True
bool2 = False
print(num1 == bool1)#True
print(num2 == bool2)#True
4、可以通过 is 来判断类型,print(0 is False)
返回的是false
p1 = 0
p2 = 0
k1 = False
k2 = False
print(p1 is p2)#True
print(k1 is k2)#True
print(p1 is k1)#False
print(0 is False)#False
# 从上面代码中我们也能得出结论,bool是int的子类,但是他们在内存中存储的是不同的东西
# True==1、False==0 时会返回 True
# True is 1、False is 0 时会返回 False
这里先解释一下关键字is,后期课程会详细讲解,python中is是一个关键字,用于比较两个对象的身份(用户判断他们是不是指向或者存储同一份内存),如果is判断返回true就说明这两个值共享一份内存,是同一份,反之就是两个不同的数据
总结:上面的例子说明了,bool是int的子类,True==1、False==0,但是实际上True和1是两分内存,他们本质上是不一样的 下面我们看看他们之间的转化,同时引出一些实际项目中的应用
转化,看代码
# bool(): 将其他数据类型转换为布尔类型
print(bool(100)) # True
print(bool(3.12)) # True
print(bool(0)) # False
print(bool("hello")) # True
print(bool('')) # False
print(bool("")) # False
print(bool(' ')) # True
print(bool([12,34,7])) # True
print(bool([])) # False
print(bool((32,45,67))) # True
print(bool({"name":"三哥","age":18})) # True
print(bool(())) #False
print(bool({})) # False
print(bool(None)) # False
总结一下上面的例子可以发现 (这个比较重要,后续开发中if判断用这个特点很好用)
-
数字0,空字符串""或者'',空列表[],空元组(),空字典{},空集合set(),None这些数据转换为bool类型 时是False
-
但是这里有个地方特别提醒一下,
print(bool(' ')) # True
这个中间实际是有字符(空格字符,这个判断返回True)
应用
那上面说了那么多到底有什么用呢,这个还是非常有用的,主要用在if判断的时候,还是上代码,注意看注释.
现在有一个场景,判断项目是不是处于登录状态
- 项目中定义一个变量loginInfo = {}
- 未登录时变量的值是{}
- 登录操作成功后我们给loginInfo赋值,可以把发起登录请求返回的登录数据赋值给loginInfo,这个时候返回的数据可能出错,有可能是None,也有可能是正常的登录信息
- 赋值后我们的 loginInfo就有可能是{},也有可能是空值None,那判断是不是有效的登录就应该如下
if(loginInfo != {} and loginInfo != None):print('有登录信息,说明是登录状态')
- 但是我们上面已经知道了空对象{}和None转化成Bool后都是false,那这样接下来的判断就简单了
#这里的if(loginInfo),如果loginInfo是{}或者是None都将会返回Flase
if(loginInfo):#假如返回true说明loginInfo一定是有有效值的对象print('有登录信息,说明是登录状态')
5、最后我们来看一下complex(复数)
复数是用来计算复杂的数据,在许多科学和工程应用中都有重要的作用,但在python平时的项目开发中用到的比较少。复数是一个数学概念,包含了实部和虚部。下面我们一起来看看怎么用它。
什么是 complex() 函数?
complex() 函数是 Python 中的一个内置函数,用于创建复数对象。复数由实部和虚部组成,形式上表示为 a + bi,其中 a 是实部,b 是虚部,i 是虚数单位。
complex() 函数的基本语法如下: complex(real, imag)
real 是一个数字或表达式,表示复数的实部。如果省略,实部默认为 0。
imag 是一个数字或表达式,表示复数的虚部。如果省略,虚部默认为 0。
创建
#complex创建复数
a = complex(2,3)
#也可以下面的方式创建
b = 2 + 3j
print(a == b)# 输出 True,
# 上面两种方式创建是一样的
获取
获取复数a的实部,使用a.real,获取复数a的虚部,使用a.imag
a = complex(2,3)
print(a.real)# 输出 2.0
print(a.imag)# 输出 3.0
运算
- 复数的加法,实部加实部,虚部加虚部;
- 复数的减法,实部减实部,虚部减虚部;
- 复数的乘法
- 注意:i ² = -1
- (a+bj) * (c+dj) = ac + adj+bcj+bd*(-1) = (ac-bd) + (ad+bc)j
- 复数的除法:复数无法直接相除。可以将被除数和除数都乘以除数的共轭复数,复数乘以其共轭复数将转换为实数,则除法运算转换为乘法运算及实部与虚部分别除以实数。
- 共轭复数:实部相同,虚部互为相反数,例如a+bj的共轭复数为
- 共轭复数相成得到实数字,(c+dj)*(c-dj)= (c²-d²)
- (a+bj) / (c+dj) = (a+bj)(c-dj)/((c+dj)(c-dj)) = ((ac+bd)+(bc-ad)j)/(c²-d²)
a = complex(10,6)
b = complex(4,3)
print(a+b)#(14+9j)实部加实部,虚部加虚部
print(a-b)#(6+3j)实部减实部,虚部减虚部;
print(a*b)#(22+54j) = (40-18) + (30 + 24)j
print(a/b)#(2.32-0.24j)