以下都是自己的一些學習筆記,可能有寫的不對的地方,還望各位大佬體諒和加以指正。
函數是一種僅在調用時運行的代碼塊。
您可以將數據(稱為參數)傳遞到函數中。
函數可以把數據作為結果返回。
在 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("Bill") # Bill
my_function("Steve") # Steve
my_function("Elon") # Elon
下面的例子展示如何使用默認參數值。
如果我們調用了不帶參數的函數,則使用默認值:
def my_function(country = "China"):
print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
您發送到函數的參數可以是任何數據類型(字符串、數字、列表、字典等),並且在函數內其將被視為相同數據類型。
例如,如果您將 list
作為參數發送,它到達函數時仍將是 list
(列表):
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
您還可以使用 key = value
語法發送參數。
參數的順序無關緊要。
def my_function(child3, child2, child1):
print("The youngest child is " + child3)
my_function(child1 = "Phoebe", child2 = "Jennifer", child3 = "Rory")
如果您不知道將傳遞給您的函數多少個參數,請在函數定義的參數名稱前添加 *
。
這樣,函數將接收一個參數元組,並可以相應地訪問各項:
如果參數數目未知,請在參數名稱前添加 *
:
def my_function(*kids):
print("The youngest child is " + kids[2])
my_function("Phoebe", "Jennifer", "Rory") # Rory
如需使函數返回值,請使用 return
語句:
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
注意
:return
語句 與 break
語句類似,執行後後面的語句不會再執行。
函數定義不能為空,但是如果您出於某種原因寫了無內容的函數定義,請使用 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\n遞歸示例結果\n")
tri_recursion(6)
注意
:遞歸函數一定要有結束條件,不然就會變成一個死循環。
def 函數名():
函數體
return
在函數中遇到return直接結束函數return
將數據返回給函數的執行者(調用)return
如果返回多個元素是以元組的形式返回給函數的執行者(ret1,ret2,ret3=meet()#元組的拆包)
三元運算符:(簡單的 if else )
c = a if a > b else b
遞歸函數一定要滿足下面兩個條件: