高階函式除了可以接受函式作為引數外,還可以把函式作為結果值返回。
當乙個函式返回了乙個函式後,其內部的區域性變數還被新函式引用,所以,閉包用起來簡單,實現起來可不容易。
返回閉包時牢記一點:返回函式不要引用任何迴圈變數,或者後續會發生變化的變數。
乙個函式可以返回乙個計算結果,也可以返回乙個函式。
返回乙個函式時,牢記該函式並未執行,返回函式中不要引用任何可能會變化的變數。
在傳入函式時,有些時候,不需要顯式地定義函式,直接傳入匿名函式更方便。
關鍵字lambda
表示匿名函式,冒號前面的x
表示函式引數。
匿名函式有個限制,就是只能有乙個表示式,不用寫return
,返回值就是該表示式的結果。
用匿名函式有個好處,因為函式沒有名字,不必擔心函式名衝突。此外,匿名函式也是乙個函式物件,也可以把匿名函式賦值給乙個變數,再利用變數來呼叫該函式。
由於函式也是乙個物件,而且函式物件可以被賦值給變數,所以,通過變數也能呼叫該函式。
現在,假設要增強now()
函式的功能,比如,在函式呼叫前後自動列印日誌,但又不希望修改now()
函式的定義,這種在**執行期間動態增加功能的方式,稱之為「裝飾器」(decorator)。
在物件導向(oop)的設計模式中,decorator被稱為裝飾模式。oop的裝飾模式需要通過繼承和組合來實現,而python除了能支援oop的decorator外,直接從語法層次支援decorator。python的decorator可以用函式實現,也可以用類實現。
python的functools
模組提供了很多有用的功能,其中乙個就是偏函式(partial function)。但是,這裡的偏函式和數學意義上的偏函式不一樣。
所以,簡單總結functools.partial
的作用就是,把乙個函式的某些引數給固定住(也就是設定預設值),返回乙個新的函式,呼叫這個新函式會更簡單。
當函式的引數個數太多,需要簡化時,使用functools.partial
可以建立乙個新的函式,這個新函式可以固定住原函式的部分引數,從而在呼叫時更簡單。
視覺里程計學習
大四要做畢業設計了,因為保送去了外校,決定畢業 跟研究生導師做。研究生導師是做gps導航的,想發展視覺導航方向,就想讓我做視覺里程計,嘗試把視覺定位研究一下。基本沒有計算機視覺的基礎的我,就這樣子誤打誤撞進了計算機這個深坑。後來發現了清華博士高翔寫的閒半居士部落格,在這裡有了乙個簡單的入門。他這裡還...
djano cms學習筆計(一)
開放原始碼的內容管理系統,基於web框架django的。優勢如下 高度可擴充套件的外掛程式系統,可讓您自由地構建各種內容的 感謝可讀的 的頁面結構是完美的搜尋引擎優化 整合網上商店與 django的商店 乙個高度靈活和可擴充套件的電子商務解決方案。新增部落格引擎使用相同的內容外掛程式,您使用djan...
GameFramework框架學習教程計畫
首先,我介紹一下我對gameframework框架的認識程度。我是在2019年過完春節,二月初回到公司開始學習遊戲開發相關的內容,這個也是我第乙個接觸的框架。過去這一年的時間裡,我一直在用這個框架,也斷斷續續的在學習這個框架,但是總感覺學習不到乙個頭,感覺沒有真正掌握這個框架,所以準備在2020年伊...