(轉)tensorflow簡介與結構介紹
函式是一種僅在呼叫時執行的程式碼塊。
您可以將資料(稱為引數)傳遞到函式中。
函式可以把資料作為結果返回。
建立函式
在 Python 中,使用def關鍵字定義函式:
例項
def my_function(): print("Hello from a function")
呼叫函式
如需呼叫函式,請使用函式名稱後跟括號:
例項
def my_function(): print("Hello from a function") my_function()
引數
資訊可以作為引數傳遞給函式。
引數在函式名後的括號內指定。您可以根據需要新增任意數量的引數,只需用逗號分隔即可。
下面的例子有一個帶引數(fname)的函式。當呼叫此函式時,我們傳遞一個名字,在函式內部使用它來列印全名:
例項
def my_function(fname): print(fname + " Gates") my_function("Rory John") my_function("Jennifer Katharine") my_function("Phoebe Adele")
預設引數值
下面的例子展示如何使用預設引數值。
如果我們呼叫了不帶引數的函式,則使用預設值:
例項
def my_function(country = "China"): print("I am from " + country) my_function("Sweden") my_function("India") my_function() my_function("Brazil")
以 List 傳參
您傳送到函式的引數可以是任何資料型別(字串、數字、列表、字典等),並且在函式內其將被視為相同資料型別。
例如,如果您將 List 作為引數傳送,它到達函式時仍將是 List(列表):
例項
def my_function(food): for x in food: print(x) fruits = ["apple", "banana", "cherry"] my_function(fruits)
返回值
如需使函式返回值,請使用return語句:
例項
def my_function(x): return 5 * x print(my_function(3)) print(my_function(5)) print(my_function(9))
關鍵字引數
您還可以使用 key = value 語法傳送引數。
引數的順序無關緊要。
例項
def my_function(child3, child2, child1): print("The youngest child is " + child3) my_function(child1 = "Phoebe", child2 = "Jennifer", child3 = "Rory")
在 Python 文件中,“關鍵字引數”一詞通常簡稱為 kwargs。
任意引數
如果您不知道將傳遞給您的函式多少個引數,請在函式定義的引數名稱前新增 *。
這樣,函式將接收一個引數元組,並可以相應地訪問各項:
例項
如果引數數目未知,請在引數名稱前新增 *:
def my_function(*kids): print("The youngest child is " + kids[2]) my_function("Phoebe", "Jennifer", "Rory")
pass 語句
函式定義不能為空,但是如果您出於某種原因寫了無內容的函式定義,請使用 pass 語句來避免錯誤。
例項
def myfunction: pass
遞迴
Python 也接受函式遞迴,這意味著定義的函式能夠呼叫自身。
遞迴是一種常見的數學和程式設計概念。它意味著函式呼叫自身。這樣做的好處是可以迴圈訪問資料以達成結果。
開發人員應該非常小心遞迴,因為它可以很容易地編寫一個永不終止的,或者使用過量記憶體或處理器能力的函式。但是,在被正確編寫後,遞迴可能是一種非常有效且數學上優雅的程式設計方法。
在這個例子中,tri_recursion()是我們定義為呼叫自身 ("recurse") 的函式。我們使用 k 變數作為資料,每次遞迴時遞減(-1)。當條件不大於 0 時(比如當它為 0 時),遞迴結束。
對於新的開發人員來說,可能需要一些時間來搞清楚其工作原理,最好的方法是測試並修改它。
例項
遞迴的例子:
def tri_recursion(k): if(k>0): result = k+tri_recursion(k-1) print(result) else: result = 0 return result print("\n\nRecursion Example Results") tri_recursion(6)