什么是数据类型呢?前面我们提过,所谓的编程,就是控制一系列的数据去完成我们预设的逻辑或者功能。所以,编程语言首先要定义一系列对“数据”的处理规则。这些处理规则包括:如何存储数据、数据的长度、数据的赋值、数据的读取、数据的显示、数据的比较等等。
不同类型的数据,它们的这些处理规则是不一样的。比如:整数和小数在内存中的存储方式肯定是不一样的;小数有精度的操作,而字符串肯定是没有的。
因此,编程语言需要对我们用到的所有数据进行分类,抽象出一些基本的类型,这就是编程语言定义的数据类型。
不同的编程语言所定义的数据类型其实大同小异,所以你只要理解了python的数据类型,其它编程语言的数据类型也基本都能搞明白。
Python3 中定义了七个标准的数据类型:
下面我们结合一些实例,依次学习这几个标准类型。
数学中的数字包括整数、小数,python中也对应定义了整型(int)和浮点型(float),另外还定义了复数类型(complex)和布尔型(bool)。
不同的类型,有不同的存储大小和取值范围,超出这个范围就会溢出报错。Python明显简化了这一类型,所有的整数类型,不论正负不论大小,全都归一为int类型。Python2还保留了long类型,python3把long类型也去掉了。
我们可以使用不同的方法表示一个int类型的数据,如下所示:
# int 类型
int_1 = 100 # 10进制正数
int_2 = -69 # 10进制负数
int_3 = 0x77 # 16进制正数
int_4 = -0x24 # 16进制负数
int_5 = 0o70 # 8进制正数
int_6 = -0o70 # 8进制负数
int_7 = 0b10 # 2进制正数
int_8 = -0b10 # 2进制负数
上面提到了进制,我们先花几分钟了解一下“进制”的概念,看下面这张图:
Python中使用0b开头表示二进制(bin)、0o开头表示八进制(oct)、0x开头表示十六进制(hex)。我们平时用得比较多的,是十进制(dec)、十六进制、二进制,八进制用得比较少。十六进制由于是满16进位,所以大于10的位用字母表示,10-15依次是a-f,不区分大小写。
进制是数值的不同表达方式。不同进制之间可以相互转换,参考下面的实例:
# file: ./6/6_1.py
# 进制表达和转换
temp_value = 32904
print(" 十进制:{}\n 二进制:{}\n 八进制:{}\n 十六进制:{}\n"
.format(temp_value, bin(temp_value), oct(temp_value), hex(temp_value)))
输出为:
十进制:32904
二进制:0b1000000010001000
八进制:0o100210
十六进制:0x8088
# float 类型
float_1 = 17.18 # 正浮点数
float_2 = -17.18 # 负浮点数
float_3 = 7.99E+3 # 科学计数正数
float_4 = -7.99E+3 # 科学计数负数
float_5 = 7.99E-3 # 科学计数
float_6 = 7.99E3 # 科学计数
float_7 = 198. # 等同于198.0
# file: ./5/5_2.py
# complex 类型
cpx_1 = 123.2+34.6j
print(cpx_1)
print('real: type %s, value %f' % (type(cpx_1.real), cpx_1.real))
print('imag: type %s, value %f' % (type(cpx_1.imag), cpx_1.imag))
输出为:
(123.2+34.6j)
real: type
, value 123.200000 imag: type
, value 34.600000
# file: ./5/5_3.py
# bool 类型
bool_1 = True
bool_2 = False
print(bool_1)
print(bool_2)
print(int(bool_1)) # 强转为int类型
print(int(bool_2)) # 强转为int类型
输出为:
True
False
1
0
好了,下节我们继续学习python的其它数据类型。
本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。
我尽量坚持每日更新一节。