第11章 函式和函式式程式設計 2

2021-05-31 22:40:29 字數 1831 閱讀 1880

11.3.6 函式(與方法)裝飾器

裝飾器是在函式呼叫之上的修飾。這些修飾僅是當宣告乙個函式或者方法的時候,才會應用的額外呼叫。

裝飾器的語法以@開頭,接著是裝飾器函式的名字和可選的引數。緊跟著裝飾器宣告的是被修飾的函式和裝飾函式的可選引數。

@decorator(dec_opt_args)

def func2bdecorated(func_opt_args):

裝飾器可以如函式呼叫一樣」堆疊「起來使用多個裝飾器。

@deco2

@deco1

def func(arg1, arg2, ...): pass

from time import ctime, sleep

1. 有引數和無引數的裝飾器

帶引數的裝飾器:需要自己返回以函式作為引數的裝飾器。換句話說,decomaker()用deco_args做了些事並返回函式物件,而該函式物件正是以foo作為其引數的裝飾器。

2. 什麼是裝飾器

可以用裝飾器來:引用日誌;增加計時邏輯來檢測效能;給函式加入事務的能力

11.4 傳遞函式

函式是可以被引用的,也作為引數傳入函式,以及作為列表和字典等容器物件的元素函式有乙個獨一無二的特徵使它同其他物件區分開來,那就是函式是可以呼叫的。

>>> def convert(func, seq):

... return [func(item) for item in seq]

... 

>>> convert(float, (1,2,3,4,5,'4'))

[1.0, 2.0, 3.0, 4.0, 5.0, 4.0]

>>> 

11.5 formal arguments

11.5.1 位置引數

位置引數必須以在被呼叫函式中定義的準確順序來傳遞。另外,沒有任何預設引數的話,傳入函式(呼叫)的引數的精確的數目必須和宣告的數字一致。

可以不按位置地將關鍵字引數傳入函式,給出關鍵字來匹配其在引數列表中的合適的位置是被允許的。

11.5.2 預設引數

對於預設引數如果在函式呼叫時沒有為引數提供值則使用預先定義的預設值。c++也支援預設引數。

python中預設值宣告變數的語法是所有的位置引數必須出現在任何乙個預設引數之前。

第11章 函式和函式式程式設計 1

11.1 什麼是函式?11.1.2 返回值和函式型別 把過程看待成函式的語言通常對於 什麼都不返回 的函式設定了特殊的型別或者值的名字。這些函式在c中預設為 void 的返回型別,意思是沒有值返回。在python中,對應的返回物件型別是none。當沒有顯式地返回元素或者如果返回none時,pytho...

第11章 函式和函式式程式設計 6

11.9 遞迴 如果乙個新的呼叫能在相同過程中較早的呼叫結束之前開始,那麼該過程就是遞迴。def factorial num if num 1 return num else return num factorial num 1 factorial 20 2432902008176640000l f...

第11章 函式

1 把相關的語句組合在一起,並且賦予相應的名稱,用這種方法來給程式分塊,這種形式的組合就是函式,函式也叫例程或者過程。程式總是從 main 函式開始啟動。函式由函式名 引數 返回值型別以及一組包含操作語句的語句塊組成。函式可以支援過載,程式就是由函式組成。2 形參是函式定義時在形參表中定義的,並且由...