python数据类型
python有6种数据类型:
- Number (数字)
- String (字符串)
- List (列表)
- Tuple (元组)
- Dictionary(字典)
- Sets(集合)
一、Number(数字)
① int
② float
③ bool
④ complex
⑤ 特殊类型 NoneType
1.int(有符号整型)
整型/整数,可以为正整数或负整数
可用 2、8、10、16 进制表示,默认为10进制
下面以10进制 42 举例:
2 进制:’ 0b101010 ’ 以’ 0b ‘开头
8 进制:’ 0o52 ’ 以’ 0o ‘开头
10 进制:’ 42 ’
16 进制:’ 0x2a ’ 以’ 0x '开头
进制转换:
bin(a):将a转换为2进制
oct(a):将a转换为8进制
int(a):将a转换为10进制
hex(a):将a转换为16进制
>>>a=42
>>>b=0x33
print(bin(a)) #转为2进制
print(oct(a)) #转为8进制
print(hex(a)) #转为16进制
print(int(b)) #转为10进制
0b101010
0o52
0x2a
51
注意:
在python2中整型是有限制的
在32位机器上,整数的位数为32位,取值范围为-2*31~2**31-1,即-2147483648~214748364
在64位系统上,整数的位数为64位,取值范围为-2**63~2*63-1,即-9223372036854775808~9223372036854775807
如果超出这个范围,int整型发生溢出,Python会自动将整数数据转换为long(长整型)
Python的长整数没有指定位宽,即Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大
在python3里不再用long类型,全部都是int
2.float(浮点型)
有限小数和无线循环小数
浮点型可以使用科学计数法表示(1.5e3 = 1.5 x10^3 = 1500.0)
>>>a=1.5e3
print(a)
print(type(a))
1500.0
<class 'float'>
3.bool(布尔型)
布尔类型仅有两个取值,True或者False,在python中必须首字母大写,它们具有相同的实例地址
>>>a = 1 == 1
>>>b = True
print(type(a))
print(type(b))
print(id(a))
print(id(b))
print(id(True))
<class 'bool'>
<class 'bool'>
140711326882128
140711326882128
140711326882128
布尔类型是int型的一个子类,由0,1代表,即:“True”=1,“False”=0
>>>print(True == 1)
print(False == 0)
True
True
虽然True代表1,False代表0。但实际上,python中的任何一个数据对象要么是True,要么是False,可以直接在布尔测试的表达式中使用,并非一定要去大小比较
>>>if a:
print('haha')
haha
bool值和int值可以进行简单的计算
>>>print(True + 1)
print(True * 2)
print(False + 1)
print(False * 2)
2
2
1
0
在python中,数值0(int,float,complex)、空字符串 ’ ’ 、空列表 [ ] 、空元组 () 、空字典 { } 、None ,在判断真假时,将被判断为False
>>>bool(0) , bool(0.0) , bool(0.0+0.0j) , bool(None) , bool('') , bool([]) , bool(()) , bool({})
(False, False, False, False, False, False, False, False)
除上列值以外的对象的布尔值都是True
注意:
1.元组的括号和逗号的特殊性, ('')、([])、({})、(None)、(0) 虽然带()但并不是元组,加上逗号才是
>>>b=('') ; c=([]) ; d=({}) ; e=(None) ; f=(0)
>>>B=('',) ; C=([],) ; D=({},) ; E=(None,) ; F=(0,)
print(type(b),type(c),type(d),type(e),type(f))
print(type(B),type(C),type(D),type(E),type(F))
<class 'str'> <class 'list'> <class 'dict'> <class 'NoneType'> <class 'int'>
<class 'tuple'> <class 'tuple'> <class 'tuple'> <class 'tuple'> <class 'tuple'>
所以,使用括号包围但却不是元组的数据,如果它们是假,则整个返回假
>>>b=('') ; c=([]) ; d=({}) ; e=(None) ; f=(0) ; g=(1)
>>>B=('',) ; C=([],) ; D=({},) ; E=(None,) ; F=(0,) ; G=(1,)
print(bool(b),bool(c),bool(d),bool(e),bool(f),bool(g))
print(bool(B),bool(C),bool(D),bool(E),bool(F),bool(G))
False False False False False True
True True True True True True
4.complex(复数)
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
>>>n=1+2j
>>>m=complex(1,-2)
print(n,type(n))
print(m,type(m))
(1+2j) <class 'complex'>
(1-2j) <class 'complex'>
5.特殊类型 NoneType
NoneType类型只有一个值None
>>>type(None)
<class 'NoneType'>
None不支持任何运算也没有任何内建方法
>>>print(1+None)
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
None和任何其他的数据类型比较永远返回False
>>>if None:
print('haha')
结果:无打印
None不是表示对象为空,也不是表示对象未定义。它自身就是一个实实在在的数据对象,在内存中有自己的内存地址,而且整个python全局只有一个唯一的None对象。可以认为,None是一种特殊的数据对象,像数值1、123、字符串’a’、'abc’一样,只不过内存中这个数据对象里面存储的数据是我们不得而知的,但它永远表示为False
>>>a=None
print(id(a))
print(id(None))
140711326928096
140711326928096
你可以将None复制给任何变量,但是你不能创建其他 NoneType 对象
None在Python解释器启动时自动创建,解释器退出时销毁