python标准类型内建函数

来源:互联网 发布:老版本的知乎 ios 编辑:程序博客网 时间:2024/06/03 01:42

1.type()

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

>>> type(4) # int type<type 'int'>>>> type('Hello World!') # string type<type 'string'>>>> type(type(4)) # type type<type 'type'>

在上面的例子里, 我们通过内建函数 type() 得到了一个整数和一个字符串的类型;为了确认一下类型本身也是类型, 我们对 type()的返回值再次调用 type(). 注意 type()有趣的输出, 它看上去不象一个典型的 Python 数据类型, 比如一个整数或一个字符串,一些东西被一个大于号和一个小号包裹着。这种语法是为了告诉你它是一个对象。每个对象都可以实现一个可打印的字符串表示。不过并不总是这样, 对那些不容易显示的对象来说, Python 会以一个相对标准的格式表示这个对象, 格式通常是这种形式: , 以这种形式显示的对象通常会提供对象类别,对象 id 或位置, 或者其它合适的信息。

2.cmp()

内建函数 cmp()用于比较两个对象 obj1 和 obj2, 如果 obj1 小于 obj2, 则返回一个负整数,如果 obj1 大于 obj2 则返回一个正整数, 如果 obj1 等于 obj2, 则返回 0。它的行为非常类似于 C 语言的 strcmp()函数。比较是在对象之间进行的,不管是标准类型对象还是用户自定义对象。如果是用户自定义对象, cmp()会调用该类的特殊方法cmp()。在第 13 章会详细介绍类的这些特殊方法。下面是几个使用 cmp()内建函数的对数值和字符串对象进行比较的例子。

>>> 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() 或反引号运算符(“) 可以方便的以字符串的方式获取对象的内容、类型、数值属性等信息。str()函数得到的字符串可读性好, 而 repr()函数得到的字符串通常可以用来重新获得该对象, 通常情况下 obj == eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象做为其参数, 返回适当的字符串。在下面的例子里, 我们会随机取一些 Python 对象来查看他们的字符串表示。

>>> str(4.53-2j)'(4.53-2j)'>>> str(1)'1'>>> str(2e10)'20000000000.0'>>> str([0, 5, 9, 9])'[0, 5, 9, 9]'>>> repr([0, 5, 9, 9])'[0, 5, 9, 9]'>>> `[0, 5, 9, 9]`'[0, 5, 9, 9]'

尽管 str(),repr()和`运算在特性和功能方面都非常相似, 事实上 repr() 和 “ 做的是完全一样的事情,它们返回的是一个对象的“官方”字符串表示, 也就是说绝大多数情况下可以通过求值运算(使用 eval()内建函数)重新得到该对象,但 str()则有所不同。str() 致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于 eval()求值, 但很适合用于 print 语句输出。需要再次提醒一下的是, 并不是所有 repr()返回的字符串都能够用eval()内建函数得到原来的对象:

>>> eval(`type(type))`)File "<stdin>", line 1eval(`type(type))`)^SyntaxError: invalid syntax

4. isinstance()

函数用法isinstance(object, classinfo),如果object是clsaainfo的一个实例(或者是classinfo的直接、间接或虚拟子类的实例),那么则返回true。如果对象不是给定类型的实例,则函数始终返回false。

>>> isinstance(1,int)True>>> isinstance('2',int)False
原创粉丝点击