三個案例帶你了解python回調函數

2020-12-17 騰訊網

回調函數:

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

通俗理解就是:

把一個函數作為參數傳給另一個函數,第一個函數稱為回調函數。這個被傳入的參數其實是函數指針,即指向一個函數的指針(地址)。

軟體模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類: 同步調用、回調和異步調用。

同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;

回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;

異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口.

回調和異步調用的關係非常緊密,通常我們使用回調來實現異步消息的註冊,通過異步調用來實現消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎,因此,下面我們著重討論回調機制在不同軟體架構中的實現

案例一

案例二

案例三

相關焦點

  • 了解和掌握Python的函數
    案例中的代碼是一個簡單的判斷器,輸入年齡x,在函數主體中進行判斷,分別輸出adult或者child。當我們定義好函數,在後續的使用中直接調用函數,並且輸入,不用再一遍遍的寫重複代碼。函數的意義就是將工作中的重複內容簡化,一個良好的程式設計師會定義清晰簡潔的函數。對於數據分析師,雖然函數的要求不那麼嚴格,但是學會了也能將數據工作精簡。
  • 深入淺出剖析C語言函數指針與回調函數
    回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。
  • 「數字時鐘」案例學習python函數及時間庫
    在程式語言中有一個非常有用的語法:函數。通過編寫函數,對於反覆使用的功能可以直接調用,能省很多精力。而時間庫則是python最常用的一個庫,今天樹哥通過繪製一個「數字時鐘」來講解函數和時間庫相關的知識。
  • Python map() 函數
    map()是Python中的內置函數,可將函數應用於給定可迭代對象中的所有元素。它允許您編寫簡單幹淨的代碼而無需使用循環Python map()函數map()函數採用以下形式:map(function, iterable, ...)
  • 還在用回調函數?快來學習怎麼將回調函數轉為成Promise吧!
    本文只是簡單的以實例講解如何將回調函數轉化為ES6中的Promise,並不會深入分析回調的優缺點,以及Promise和async/await的原理,如果你想了解這些,請關注我。我將在以後的文章中詳細講解這些知識點。
  • C++類與回調函數
    如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。其實說白了就是把一個函數當做參數傳下去。
  • C語言函數指針之回調函數
    1 什麼是回調函數?首先什麼是「回調」呢?如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。2 為什麼要用回調函數?
  • python中的函數增強神器functools模塊
    :sorted(iterable, cmp=None, key=None, reverse=False),參數中包含一個cmp參數,來提供讓我們傳入一個自定義函數的參數,但是python3 中的sorted函數原型是:sorted(iterable, /, *, key=None, reverse=False),這裡出現了/,*兩個符號,上一篇我們介紹過,主要是後面沒有了cmp參數,自定義函數排序就很不方便
  • Python之函數學習(八)
    World    作為函數來說,都是有參數的,如寫一個函數為:二個數想加,返回它的結果值,那麼該函數為:在如上的代碼中,可以看到,定義了add的函數,參數分別是a,b,函數的返回值是a+b和的結果,在該函數中,a和b就是函數的形式參數,那麼什麼是實際參數了,調用函數add(2,3),在這裡,2和3就是函數的實際參數,另外特別的注意,在函數中,return後還可以執行其他的語句
  • Python代碼結構:函數
    在Python中圓括號意味著調用函數。在沒有圓括號的情況下,python會把函數當作普通對象。>>>type(add_args)<class 'function'>No.4此刻定義一個函數run_something_with_args,它帶有三個參數:func-可以運行的函數arg1-func函數的第一個參數arg2-func函數的第二個參數>&
  • 使用python實現一個簡單計算器
    但是並沒有做過什麼實際的案例,主要原因是因為使用tikinter做界面比較麻煩,沒有可視化的設計來的快,就像我之前用的QT設計工具,就非常方便。如果做一些簡單的界面,使用tkinter還是很方便的,畢竟是python自帶的庫。今天將會做下面這樣的一個計算器,可以實現基本的加減程序的運算,整體代碼邏輯比較簡單,主要是一個回調函數的理解。
  • Python案例|混用C函數
    今天,我們來解決python的速度問題.我們平時所說的Python是指在PC機上的CPython,換句話說,Python的解釋器是用C語言編寫的。為Python編寫C擴展模塊能夠顯著提高Python的執行速度,眼下有好幾種方案可以完成這件事。
  • 深入淺出剖析C語言函數指針與回調函數(一)
    今天我們要搞明白的一個概念叫回調函數。什麼是回調函數?
  • 回調函數繞過D盾小套路
    D盾小套路最近略看表哥和是師傅們的文章,聽說D盾把所有回調函數都拉黑了,存在回調函數就報可疑。木馬使用方法:密碼:a函數繞過隨便寫個函數,將回調函數藏到函數裡面去,將代碼執行函數和post的參數通過參數傳給函數,即可成功繞過,繞過代碼如下:
  • Python函數概述
    你已經知道Python提供了許多內建函數,比如print()。但你也可以自己創見函數,這被叫做用戶自定義函數。定義一個函數你可以定義一個由自己想要功能的函數,以下是簡單的規則:函數代碼塊以def關鍵詞開頭,後接函數標識符名稱和圓括號()。
  • [基礎] PHP回調函數及匿名函數,加深一下吧!
    每天給你分享一個PHP基礎知識點,希望能幫助到你,花5分鐘時間看看。
  • 5個助你效率提升的python小技巧
    使用交互模式使用python -i xxxx.py可以直接進入python的交互模式,可以很方便的調用xxxx.py中定義的方法和函數,特別適合調試沒有main()方法的文件,強力推薦。使用pdb進行調試很多從c++/java轉到python的同學可能對python沒有斷點功能相當失望。
  • 技術 | 虛假的回調函數: addEventListener
    一個陽光明媚(才怪)的下午,我一個同樣和我學習前端的朋友來問我關於this指向的問題,首先就是關於箭頭函數和函數聲明中關於this指向的問題,這個是老生常談的話題了,沒有問題;然後就著這個話題談到了回調函數中的this,他舉了個例子:setTimeout(() => { console.log(this)})setTimeout
  • 有關JavaScript中回調函數的所有內容!
    回調函數是每個 JS 開發人員都應該知道的概念之一。回調用於數組,計時器函數,promise,事件處理程序等中。在本文中,會解釋回調函數的概念。另外,還會幫助智米們區分兩種回調:同步和異步。map(array, callback)是一個高階函數,因為它接受回調函數作為參數,然後在它的函數體內部調用回調函數:callback(item)。2.同步回調回調的調用方式有兩種:同步和異步回調。同步回調是在使用回調的高階函數執行期間執行的。
  • JS異步編程,回調函數與promise
    他們均使用回調函數來進行異步調用。當回調函數中嵌套了回調函數,甚至是多層回調時,編碼就不夠直觀了。而使用Promise就能通過同步的編碼方式實現異步調用。1.多層回調:使用setTimeout()函數執行3層嵌套的異步回調,編碼不直觀  1   function async(){   2  setTimeout(function(){  //回調函數1   3  console.log(1);    4  setTimeout(function(){  //回調函數2