Python 数据类型


Python是一种动态类型语言。Python的值(对象)有类型,变量没有类型。Python有多种内置数据类型,使用者也可以自己定义数据类型。


内置数据类型

Python有下面几种内置数据类型:

  • bool:布尔型,只有两种值True和False。
  • int:任意精度的整数。
  • float:浮点数,精度与系统有关。
  • complex:复数,如1+2.0j。
  • str:由unicode字符组成的序列,不可改变。
  • list:列表,可包含多种类型数据的序列,可改变。
  • tuple:元组,可包含多种类型数据的序列,不可改变。
  • set:集合,可包含多种类型数据的无顺序集合,不包含重复数据,可改变。
  • frozenset:集合,可包含多种类型数据的无顺序集合,不包含重复数据,不可改变。
  • dict:字典,由键值对组成的无顺序关联数组,可改变。
  • bytes:由字节组成的的序列,不可改变。
  • bytearray:由字节组成的的序列,可改变。

下面是内置数据类型的例子:

#!/usr/bin/python

b = True
i = 2
f = 2.0
c = 1 + 2j

s = 'hello'
list = [1, True]
tuple = (1, True)
set = {1, 2, 2, True}
frozenset = frozenset([1, True])
dict = {1:True, 0:False}
bytes = b'abc'
bytearray = bytearray(b'abc')

print(b, i, f, c)   # True 2 2.0 (1+2j)

print(s)        # hello
print(list)     # [1, True]
print(tuple)    # (1, True)
print(set)      # {True, 2}
print(frozenset)    # frozenset({1})
print(dict)     # {0: False, 1: True}
print(bytes)    # b'abc'
print(bytearray)    # bytearray(b'abc')

查看对象类型

使用type函数查看对象类型,isinstance函数判断一个对象是否是一个类的实例。

下面是查看对象类型的例子:

#!/usr/bin/python

print(type(True))   # <class 'bool'>
print(type(1))      # <class 'int'>
print(type(2.0))    # <class 'float'>
print(type(1.0+2.0j))   # <class 'complex'>
print(type('hello'))    # <class 'str'>

print(type([1, True]))  # <class 'list'>
print(type((1, True,))) # <class 'tuple'>
print(type({1, True}))  # <class 'set'>
print(type(frozenset([1, True])))   # <class 'frozenset'>
print(type({1:True, 0:False}))      # <class 'dict'>

print(type(b'abc')) # <class 'bytes'>
print(type(bytearray(b'abc')))  # <class 'bytearray'>

print(type(None))   # <class 'NoneType'>

print(isinstance(b'abc', bytes))    # True

类型转换

Python是强类型语言,数字和字符串相加会报错,必须进行显示类型转换。使用类型名称作为函数名进行类型之间的转换。

#!/usr/bin/python

b = bool(0)
i = int(1.2)
i2 = int('2')
f = float('1.2')
s = str(1.23)

set = set([1, 2])
list = list(set)
tuple = tuple(list)
print(b, i, f, s)   # False 1 1.2 1.23

# i = 2 + '3'     # error: TypeError: unsupported operand type(s) for +: 'int' and 'str'
i = 2 + int('3')
s = str(2) + '3'
print(i, s)     # 5 23