国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python回調,函數用法實例詳解

2019-11-02 14:53:25
字體:
來源:轉載
供稿:網友

   本文實例講述了Python回調函數用法。分享給大家供大家參考。具體分析如下:

  一、百度百科上對回調函數的解釋:

  回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用為調用它所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用于對該事件或條件進行響應。

  二、什么是回調:

  軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口)。回調和異步調用的關系非常緊密,通常我們使用回調來實現異步消息的注冊,通過異步調用來實現消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎,因此,下面我們著重討論回調機制在不同軟件架構中的實現。

  三、一個小例子:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #call.py import called def callback(): print "in callback" def main(): #called.test() called.test_call(callback) print "in call.py" main() #called.py ''''' def test(): print "in called.py test()" ''' def test_call(p_call): print "in called.py test_call()" p_call() [email protected]:~/test/python$ python call.py in called.py test_call() in callback in call.py [email protected]:~/test/python$

  網上搜到的一個面向對象實現的例子:

  當你要加入回調(Callback)功能的時候,代碼往往會偏重于回調的實現而不是問題本身了。一個解決方法就是實現一個通用的基礎類來解決回調的需求,然后再來實現你為某個事件(Event)所綁定(Binding)的方法(Method)。

  代碼如下:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 class CallbackBase: def __init__(self): self.__callbackMap = {} for k in (getattr(self, x) for x in dir(self)): if hasattr(k, "bind_to_event"): self.__callbackMap.setdefault(k.bind_to_event, []).append(k) elif hasattr(k, "bind_to_event_list"): for j in k.bind_to_event_list: self.__call
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大邑县| 岑巩县| 丽江市| 德庆县| 鹤岗市| 辉南县| 乐昌市| 莱阳市| 麻城市| 潍坊市| 榆中县| 丹东市| 郑州市| 昌平区| 五峰| 健康| 米林县| 康平县| 瓮安县| 东城区| 花莲市| 简阳市| 鹤庆县| 溆浦县| 建阳市| 昌江| 东山县| 辽宁省| 横峰县| 保定市| 绵竹市| 浪卡子县| 怀仁县| 浦北县| 湾仔区| 南开区| 沙洋县| 广灵县| 富顺县| 通榆县| 开封县|