Python函式作用域和匿名函式

2022-08-02 18:48:08 字數 1504 閱讀 9252

匿名函式的定義

全域性變數和區域性變數的概念

global(全域性變數)和 nonlocal(區域性變數)

閉包、遞迴、** 

匿名函式

匿名函式  lambda

語法規則:lambda   引數 : 表示式 

lambda匿名函式的格式:冒號前是引數,可以有多個,用逗號隔開,冒號右邊的為表示式

lambda返回值是乙個函式的位址,也就是函式物件

函式作用域

函式內部

函式內部的變數,作用域只在函式內部,函式內部不可以直接更改函式外部的變數

global(全域性變數)

函式內部如果需要改變全域性變數,就需要使用global修飾變數

nonlocal(區域性變數)

在函式巢狀函式的情況下,同樣也有函式作用域的問題,但是python3中提供了方便,只需要使用nonlocal就可以在裡層函式內部修改外部函式變數

閉包函式裡面巢狀函式,外層函式返回裡層函式,這種情況稱之為閉包

閉包是概念,不是某種函式型別,和遞迴的概念類似,就是種特殊的函式呼叫

閉包可以得到外層函式的區域性變數,是函式內部和函式外部溝通的橋梁

遞迴和**函式

遞迴函式可以自身呼叫自身,但是使用時類似於條件迴圈一樣,要有遞迴的終止條件

使用遞迴時,可以讓**更加簡潔

但遞迴會占用比較多的記憶體,當遞迴次數比較多時,效能就會降低,不建議多使用遞迴

**自身是乙個函式,只是被傳入到另乙個函式當中,供其呼叫

**函式不一定會被呼叫,是否呼叫由被傳入函式的內部邏輯決定

python中函式作用域 python中函式作用域

1 作用域 如果乙個變數在def內賦值,他被定位在這個函式內 如果乙個變數在乙個巢狀的def中賦值,對於巢狀的函式來說,它非本地的 如果在def之外賦值,他就是整個檔案 2 在互動式模式下,其實是在乙個名為 main 的模板內。3 乙個函式的內部的任何型別的賦值都會把乙個名稱劃定為本地的。這包括 語...

js的函式和匿名函式和作用域

概念 沒有名字的函式 匿名函式的自呼叫 第一種 function 第二種 function 通過函式表示式宣告的函式 函式表示式宣告 var getday function 通過函式表示式宣告的函式,呼叫時,getday 代表返回值 getday 代表的為整個函式體在呼叫函式時,瀏覽器每次會傳遞進兩...

Python 全域性作用域 區域性作用域及遞迴函式

例1 累加def add args 定義可變引數,累加 param args 可變引數 return 累加求和後的值 total 0 for value in args total value return total if name main print add 1,2,3,4,5,10 a 10...