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

2021-05-31 23:19:05 字數 1276 閱讀 5304

11.9 遞迴

如果乙個新的呼叫能在相同過程中較早的呼叫結束之前開始,那麼該過程就是遞迴。

>>> def factorial(num):

... if num == 1:

... return num

... else:

... return num * factorial(num-1)

...

>>> factorial(20)

2432902008176640000l

>>> factorial(4)

24>>> 

11.10 生成器

什麼是python式的生成器?從語法上講,生成器是乙個帶yield語句的函式。乙個函式或者子程式只返回一次,但乙個生成器能暫停執行並返回乙個中間的結果——那就是yield語句的功能,返回乙個值給呼叫者並暫停執行。當生成器的next()方法被呼叫的時候,它會準確地從離開地方繼續。

>>> def ******_gen():

... yield 1

... yield 'haha'

...

>>> for i in ******_gen():

... print i

...

1haha

>>> 

11.10.2 加強的生成器特性

在python2.5中, 一些新特性加入到生成器中,所以除了next()來獲得下個生成的值,使用者可以將值回送給生成器[send()],在生成器中丟擲異常,以及要求生成器推出[close()]。

>>> def counter(start_at = 0):

... count = start_at

... while true:

... val = (yield count)

... if val is not none:

... count = val

... else:

... count += 1

...

>>> count = counter()

>>> count.next()

0>>> count.next()

1>>> count.send(100)

100>>> count.next()

101>>> count.close()

>>> count.next()

traceback (most recent call last):

file "", line 1, in

stopiteration

>>> 

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

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

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

11.3.6 函式 與方法 裝飾器 裝飾器是在函式呼叫之上的修飾。這些修飾僅是當宣告乙個函式或者方法的時候,才會應用的額外呼叫。裝飾器的語法以 開頭,接著是裝飾器函式的名字和可選的引數。緊跟著裝飾器宣告的是被修飾的函式和裝飾函式的可選引數。decorator dec opt args def fun...

第11章 函式

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