函數是一段代碼塊,只有在調用時才會運行。您可以將數據(稱為參數)傳遞給函數。 函數可以返回數據作為結果。 創建函數 在Python中,使用def關鍵字定義函數: 示例 def my_function(): print("Hello from a function") 調用函數 要調用函數,請使用函數 ...
函數是一段代碼塊,只有在調用時才會運行。您可以將數據(稱為參數)傳遞給函數。
函數可以返回數據作為結果。
創建函數
在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 + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
參數通常在Python文檔中縮寫為args。
參數或參數?
術語參數和參數可以用於相同的事物:傳遞給函數的信息。
從函數的角度來看:
- 參數是函數定義中括弧內列出的變數。
- 參數是在調用函數時發送到函數的值。
參數數量
預設情況下,必須使用正確數量的參數來調用函數。這意味著,如果函數需要2個參數,您必須使用2個參數來調用函數,不能多,也不能少。
示例
這個函數需要2個參數,得到了2個參數:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
如果嘗試使用1個或3個參數調用函數,將會導致錯誤:
示例
這個函數需要2個參數,但只得到1個:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
任意數量的參數,args。如果不知道將傳遞多少個參數到函數中,可以在函數定義中的參數名前添加一個。這樣,函數將接收到一個參數元組,並可以相應地訪問項目:
示例,如果參數數量未知,請在參數名稱前添加*:
def my_function(*kids):
print("The youngest child is " + kids[2])
my_function("Emil", "Tobias", "Linus")
在Python文檔中,任意參數通常被縮寫為args。
關鍵字參數
還可以使用key = value語法發送參數。這樣,參數的順序就不重要了。
示例
def my_function(child3, child2, child1):
print("The youngest child is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
短語關鍵字參數通常在Python文檔中縮寫為kwargs。任意關鍵字參數,kwargs。如果不知道將傳遞多少個關鍵字參數到函數中,可以在函數定義中的參數名稱前添加兩個星號:**。這樣,函數將接收到一個參數字典,並可以相應地訪問項目:
示例,如果不知道關鍵字參數的數量,請在參數名稱前添加兩個星號:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
在Python文檔中,任意關鍵字參數通常被縮寫為**kwargs。
預設參數值
以下示例顯示瞭如何使用預設參數值。
如果我們在沒有參數的情況下調用函數,它將使用預設值:
示例
def my_function(country = "Norway"):
print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
將列表作為參數傳遞
您可以將任何數據類型的參數發送到函數(字元串、數字、列表、字典等),並且在函數內部它將被視為相同的數據類型。例如,如果將列表作為參數發送,那麼當它到達函數時,它仍然是一個列表:
示例
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))
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\n遞歸示例結果")
tri_recursion(6)
Python Lambda函數
Lambda函數是一種小型的匿名函數。Lambda函數可以接受任意數量的參數,但只能有一個表達式。
語法
lambda 參數 : 表達式
該表達式將被執行,並返回結果。
示例
# 將10添加到參數a,並返回結果:
x = lambda a : a + 10
print(x(5))
Lambda函數可以接受任意數量的參數:
示例
# 將參數a與參數b相乘並返回結果:
x = lambda a, b : a * b
print(x(5, 6))
為什麼使用Lambda函數?
Lambda的強大之處在於,當您將它們用作另一個函數中的匿名函數時,它們表現得更好。假設您有一個函數定義,該函數接受一個參數,該參數將與一個未知的數字相乘:
def myfunc(n):
return lambda a : a * n
使用該函數定義創建一個函數,該函數始終將發送的數字加倍:
示例
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
print(mydoubler(11))
或者,使用相同的函數定義創建一個函數,該函數始終將發送的數字乘以3:
示例
def myfunc(n):
return lambda a : a * n
mytripler = myfunc(3)
print(mytripler(11))
或者,在同一程式中使用相同的函數定義創建兩個函數:
示例
def myfunc(n):
return lambda a : a * n
mydoubler = myfunc(2)
mytripler = myfunc(3)
print(mydoubler(11))
print(mytripler(11))
最後
為了方便其他設備和平臺的小伙伴觀看往期文章:公眾號搜索Let us Coding
,或者掃描下方二維碼,關註公眾號,即可獲取最新文章。
看完如果覺得有幫助,歡迎點贊、收藏和關註