按照惯例先吟诗一首:

宿建德江
唐代:孟浩然
移舟泊烟渚,日暮客愁新。
野旷天低树,江清月近人。

1.标准类型内建函数

1.type()

type()接受一个对象参数,返回该对象的类型。它的返回值是一个对象的类型。

1
2
>>> type(4) # int type
<type 'int'>

2.cmp()

内建函数cmp(obj1,obj2)用来比较两个对象obj1和obj2的大小,如果obj1比obj2小的话,返回负整数,如果obj1比obj2大的话,返回正整数,如果obj1等于obj2小的话,返回0,比较是在对象之间进行的,不管是标准类型对象还是用户自定 义对象。如果是用户自定义对象, cmp()会调用该类的特殊方法cmp()

1
2
3
4
5
6
7
>>> a, b = -4, 12
>>> cmp(a,b)
-1
>>> cmp(b,a)
1
>>> b = -4 >>> cmp(a,b) 0 >>> >>> a, b = 'abc', 'xyz' >>> cmp(a,b) -23 >>> cmp(b,a) 23 >>> b = 'abc' >>> cmp(a,b) 0

3.str()和 repr() (及 `` 运算符)

str()函数得到的字符串可读性好, 而 repr()函数得到的字符 串通常可以用来重新获得该对象, 通常情况下 obj == eval(repr(obj)) 这个等式是成立的。事实上 repr() 和 “” 做的 是完全一样的事情,它们返回的是一个对象的“官方”字符串表示,但 str()则有所不同。str() 致力 于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于 eval()求值, 但很适 合用于 print 语句输出。

4.type() 和 isinstance()

在Python中可以使用type()与isinstance()这两个函数判断对象类型,而isinstance()函数的使用上比type更加方便。区别就是 对于subclass之类的 type就不行了,所以,强烈建议不要使用type判断对象类型。

1
2
3
4
5
6
7
8
9
10
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False

2.标准类型分布

数据类型 存储模型 更新模型 访问模型
数字 标量 不可变 直接访问
字符串 标量 不可变 顺序访问
列表 容器 可变 顺序访问
元祖 容器 不可变 顺序访问
字典 容器 可变 映射访问