匿名函數和閉包的區別


在學習python基礎中對於匿名函數和閉包等只是有不太明白的地方,分不清他們的區別,所以整理下方便后期復習提升。反思:對於零碎的python基礎知識,一定要牢記,多看多敲代碼,一回生二回熟,熟能生巧。

一、匿名函數

所謂匿名就是不需要函數表達式

lambda x : x*x

關鍵字lambda表示匿名函數,冒號前面的x表示函數參數。

匿名函數有個限制,就是只能有一個表達式,不用寫return,返回值就是該表達式的結果。

小結:

匿名函數:lambda表達式:通過一個表達式實現函數功能
基本語法:lambda 參數列表:表達式語句
參數列表:用來給表達式傳遞數據
表達式語句:計算表達式,計算結果會自動輸出
注意事項:lambda表達式,主要是用來替代功能簡單的函數的!提高代碼的簡潔性
不要濫用!大量使用lambda表達式會造成代碼可讀性的嚴重下降!

 

二、閉包

1、定義:內部函數包含對外部作用域而非全劇作用域名字的引用,該內部函數稱為閉包函數。

2、創建閉包函數:

  如果在一個內部函數里對外部作用域(但不是全局作用域)的變量進行引用,內部函數稱為閉包(closure)

------閉包函數必須有內嵌函數
------內嵌函數需要引用該嵌套函數上一級namespace中的變量
------閉包函數必須返回內嵌函數

 

小結:

閉包就是函數里面嵌套一個函數
因為函數的出現,導致變量出現了分化:全局變量、局部變量
全局變量:當前模塊中任意地方都能訪問!
局部變量:當前函數中可以操作
~全局變量-局部變量:變量-在函數外部調用訪問:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM