1. 程式人生 > >python標準型別內建函式

python標準型別內建函式

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 1
eval(`type(type))`)
^
SyntaxError: invalid syntax

4. isinstance()

函式用法isinstance(object, classinfo),如果object是clsaainfo的一個例項(或者是classinfo的直接、間接或虛擬子類的例項),那麼則返回true。如果物件不是給定型別的例項,則函式始終返回false。

>>> isinstance(1,int)
True
>>> isinstance('2',int)
False