python04 函式的定義 呼叫與遞迴

2021-07-12 02:27:11 字數 2207 閱讀 2733

一、 函式的定義

python的函式部分我覺得難點在與函式的引數,所以準備單獨寫關於引數的部分。而本文就寫關於定義、呼叫以及函式的遞迴。

python中函式的定義格式為:

def  函式名(引數名, 引數名):
下面縮排後寫函式內容。比如說寫乙個能返回我我自己名字的函式(不要說我自戀):

def

re_name

(name):

print(『sui xiansen』)

return

對於函式體內的內容,說一下幾點:

1.1 pass語句。

如果你想要函式什麼也不執行,或者說還沒想好函式體內改寫什麼,可以加乙個pass語句,這可以讓你的編譯通過不出錯。

def

re_name

():pass

1.2 return的內容

def

re_name

(x,y):

return x,y

呼叫的時候: z,w=re_name(『sui』,』sun』)

1.3 變數型別的限定

python函式在寫變數的時候不像c一樣要寫明資料型別,所以如果你需要限定變數的資料型別,就需要在函式體內部加乙個判斷語句。

此處又用到了乙個內建函式isinstance(變數,資料型別)返回布林值。

比如說我的re_name()函式的變數要求只能是字串,不能是其他資料型別,否則就提示錯誤。那麼我應該這麼寫。

def

re_name

(name):

ifnot isinstance(name,str):

raise typeerror(『資料型別不對啊哥們』)

else:

print(name)

至於raise和typeerror的用法,以後再說唄。

二、 函式的呼叫

這一部分簡直是沒什麼可說的,上面的例項中都演示過了。乙個簡單的問題提一下:

當我定義完re_name函式以後,寫一句 asd=re_name 然後我使用asd(『sui』)會不會有效呢?

結果當然是,有效的!

三、 遞迴函式

遞迴的意思就是函式的返回值還是返回用這個函式。舉例就是:1+2+3+4+5+……+n

def

sum_n

(n):

if n==1:

return

1return n+sum_n(n-1)

講乙個小故事,大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

這就是漢諾塔的故事,乙個經典的遞迴演算法的例子。

假設三根柱子是a,b,c,需要將64個圓盤從a搬到c,那麼需要以下這三個過程:

a) 把最上面的63個圓盤由a搬到b;

b) 將a剩下的那個最大的圓盤由a搬到c;

c) 將b上面的63個圓盤搬到c;

這樣問題就轉換成了「b上面的63個圓盤搬到c」,很顯然,繼續重複上面的三步就好了,直到最後n由64變為1,直接搬過去就好。

def

hannuo_tower

(n,』a』,』b』,』c』):

if n==1:

print(『a』,』』,』c』)

else:

hannuo_tower(n-1,』a』,』c』,』b』)

hannuo_tower(1,』a』,』b』,』c』)

hannuo_tower(n-1,』b』,』a』,』c』)

python的實現過程如上所示,經過計算得到的結果表明移完這些金片需要5845.54億年以上,而地球存在至今不過45億年,太陽系的預期壽命據說也就是數百億年。真的過了5845.54億年,不說太陽系和銀河系,至少地球上的一切生命,連同梵塔、廟宇等,都早已經灰飛煙滅。

python 04(程序和執行緒)

併發 當有多個執行緒在操作的時候,如果系統只有乙個cpu,把cpu執行時間劃分成若干個時間段,分配給各個執行緒執行,在乙個時間段當程序 執行時,其他執行緒處於掛起狀態。併發 間隔發生 並行當系統有乙個以上cpu時,則執行緒的操作有可能非併發。當乙個cpu執行乙個執行緒時,另乙個 cpu可以執行另乙個...

Python04 簡單if邏輯判斷

密碼校驗 簡單if判斷 usr bin env python coding utf 8 author mclind username mc password 123 username input username password input password if username usernam...

python04 判斷與迴圈語句

一 迴圈語句 python中的迴圈語句與其他語言一樣有兩種,for與while 1.for迴圈 python中的for的語句格式與其他語言相差較大,如下 for d in 1,2,3 在這裡要通過for迴圈引出python的內建函式。出乙個題 算出1 2 100?答 for i in list ra...