Python采用动态类型系统。在编译的时候,Python不会检查对象是否拥有被调用的方法或者属性,而是直至运行时,才做出检查。所以操作对象时可能会抛出异常。不过,虽然Python采用动态类型系统,它同时也是强类型的。Python禁止没有明确定义的操作,比如数字加字符串。
与其它面向对象语言一样,Python允许程序员定义类型。构造一个对象只需要像函数一样调用类型即可,比如,对于前面定义的Fish类型,使用Fish。类型本身也是特殊类型type的对象(type类型本身也是type对象),这种特殊的设计允许对类型进行反射编程。
Python内置丰富的数据类型。与Java、C++相比,这些数据类型有效地减少代码的长度。下面这个列表简要地描述了Python内置数据类型(适用于Python 3.x):
类型
|
描述
|
例子
|
备注
|
---|---|---|---|
str(string/字符串)
|
一个由字符组成的不可更改的有序串行。
|
“””Spanning
multiple
lines”””
|
在Python 3.x里,字符串由Unicode字符组成
|
bytes(字节)
|
一个由字节组成的不可更改的有序串行。
|
b’Some ASCII’
b”Some ASCII”
|
在Python 2.x里,bytes为str的一种
|
list(列表)
|
可以包含多种类型的可改变的有序串行
|
[4.0,’string’,True]
|
无
|
tuple(元组)
|
可以包含多种类型的不可改变的有序串行
|
(4.0,’string’,True)
|
无
|
set,frozenset
|
与数学中集合的概念类似。无序的、每个元素都是唯一的。
|
{4.0,’string’,True}
frozenset([4.0,’string’,True])
|
无
|
dict(字典)
|
一个可改变的由键值对组成的无序串行。
|
{‘key1’:1.0,3:False}
|
无
|
int(整数)
|
精度不限的整数
|
42
|
无
|
float(浮点数)
|
浮点数。精度与系统相关。
|
3.1415927
|
无
|
complex
|
复数
|
3+2.7j
|
无
|
bool
|
逻辑值。只有两个值:真、假
|
True
False
|
无
|
builtin_function_or_method
|
自带的函数,不可更改也不可增加
|
print
input
|
无
|
type(类型)
|
显示某个值的类型,用type(x)获得
|
type(1)->int
type(‘1’)->str
|
无
|
range
|
按顺序排列的数
|
range(10)
……list(range(10))->[0,1,2,3,4,5,6,7,8,9]
range(1,10)
……list(range(1,10)->[1,2,3,4,5,6,7,8,9]
range(1,10,2)
……list(range(1,10,2))->[1,3,5,7,9]
|
在Python 2.x中,range为builtin_function_or_method,获得的数为list
|
除了各种数据类型,Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此,Python具备很强的动态性。