First-class只是意味着功能可以作爲一個值來處理 - 也就是說,你可以將它們分配給變量,從函數返回他們,以及在將它們作爲一個參數。也就是說,你可以做這樣的代碼:
>>> def say_hi():
print "hi"
>>> def say_bye():
print "bye"
>>> f = say_hi
>>> f()
hi
>>> f = say_bye
>>> f()
bye
這是非常有用的,你現在可以將功能分配給變量就像任何普通的變量:
>>> for f in (say_hi, say_bye):
f()
hi
bye
或者寫高階函數(即取功能參數) :
>>> def call_func_n_times(f, n):
for i in range(n):
f()
>>> call_func_n_times(say_hi, 3)
hi
hi
hi
>>> call_func_n_times(say_bye, 2)
bye
bye
關於__class__
在蟒蛇告訴你對象有什麼type
。例如,如果你在python中定義一個列表對象:a = [1,2,3]
,那麼a.__class__
將是<type 'list'>
。如果你有一個日期時間(from datetime import datetime
,然後d = datetime.now()
,然後d
實例的類型將是<type 'datetime.datetime'>
。他們只是表示在Python的功能是不是一個全新的概念,它是<type 'function'>
只是一個普通的對象。
它__has__一個類的事實使它成爲一個拳頭[SIC]類對象 – Wolph
所以python中的所有東西都有__class__成員在裏面嗎?並且輸出表示它是函數類型的對象? –
liv2hak