函數的用法,包括函數的閉包、裝飾器、生成器等。
1. 函數的閉包
閉包是指在函數內部定義一個函數,并返回這個函數的過程。這個返回的函數可以訪問到外部函數的局部變量,即使外部函數已經執行完畢。
下面是一個閉包的例子
def outer(x)ner(y) x + yner
c = outer(10)tc(5)) 輸出15
nernernercner(5),這個結果就是15。
2. 函數的裝飾器
裝飾器是指在不修改原函數的情況下,給函數添加一些額外的功能。我們可以通過定義一個裝飾器函數,來給其他函數添加這些額外的功能。
下面是一個裝飾器的例子
```c)
def wrapper(args, kwargs)tgcame__)c(args, kwargs) wrapper
def add(x, y) x + y
tg add()...和8
在這個例子中,我們定義了一個log裝飾器函數,它接收一個函數作為參數,并返回一個包裝后的函數wrapper。這個wrapper函數可以在調用原函數前后添加一些額外的功能,比如打印日志等。而通過@log語法糖,我們可以將add函數傳遞給log函數,并將返回的wrapper函數賦值給add函數,這樣我們就可以直接調用add函數,并且在調用前后會自動執行log函數。
3. 函數的生成器
生成器是指一種特殊的函數,它可以在遇到yield語句時暫停執行,并將yield后面的值返回。當再次調用該函數時,它會從上一次暫停的位置繼續執行。
下面是一個生成器的例子
```tdown) >0 -= 1
tdown(5)t(i) 輸出5, 4, 3, 2, 1
tdowntdown的值為0時停止。
進行編程。