Python基礎篇之 call

2021-08-13 15:13:58 字數 791 閱讀 4881

python中 __call__

在python中,函式其實是乙個物件:

f = abs

f.__name__

『abs』

f(-123)

123

由於 f 可以被呼叫,所以,f 被稱為可呼叫物件。

所有的函式都是可呼叫物件。

乙個類例項也可以變成乙個可呼叫物件,只需要實現乙個特殊方法__call__()。

我們把 person 類變成乙個可呼叫物件:

class person(object):

def __init__(self, name, gender):

self.name = name

self.gender = gender

def __call__(self, friend):

print 'my name is %s...' % self.name

print 'my friend is %s...' % friend

現在可以對 person 例項直接呼叫:

p = person(『bob』, 『male』)

p(『tim』)

my name is bob…

my friend is tim…

單看 p(『tim』) 你無法確定 p 是乙個函式還是乙個類例項,所以,在python中,函式也是物件,物件和函式的區別並不顯著。

Python基礎篇 python之if條件

python的if語句是類似的其他語言。if語句包含乙個邏輯表示式,使用哪些資料進行了比較,比較的結果的基礎上作出決定。if語句的語法是 if expression statement s 這裡的if語句,條件是第一次評估。如果條件為真,那就是,如果其值為非零,則執行語句塊 s 否則,下乙個語句之後...

Python基礎篇之for迴圈

python之 for迴圈 list或tuple可以表示乙個有序集合。如果我們想依次訪問乙個list中的每乙個元素呢?比如 list l adam lisa bart print l 0 print l 1 print l 2 如果list只包含幾個元素,這樣寫還行,如果list包含1萬個元素,我們...

Python基礎篇之dict

我們已經知道,list 和 tuple 可以用來表示順序集合,例如,班裡同學的名字 adam lisa bart 或者考試的成績列表 95,85,59 但是,要根據名字找到對應的成績,用兩個 list 表示就不方便。如果把名字和分數關聯起來,組成類似的查詢表 adam 95 lisa 85 bart...