Python 包含許多內置函數。這些函數執行預定義的任務,並且可以根據需要在任何程序中調用。但是,如果您沒有找到合適的內置函數來滿足您的目的,您可以定義一個。我們現在將看到如何在 Python 程序中定義和使用函數。
定義函數
函數是一個可重用的編程語句塊,用於執行特定的任務。為了定義一個函數,Python 提供了def
關鍵字。以下是定義函數的語法。
Syntax:
def function_name(parameters):
"""docstring"""
statement1
statement2
...
...
return [expr]
關鍵字def
後面跟一個合適的標識符作為函數的名稱和括號。一個或多個參數可以任選地在括號內提及。括號後的:
符號開始縮進塊。
函數體中的第一個語句可以是字符串,稱為docstring
。它解釋了函數/類的功能。 文檔字符串不是強制性的。
函數體包含一個或多個執行某些操作的語句。也可以使用傳遞關鍵字。
可選地,函數塊中的最後一條語句是 return 語句。它將執行控制發送回調用環境。如果在返回之前添加了一個表達式,它的值也會返回到調用代碼中。
以下示例定義了greet()
函數。
Example: User-defined Function
def greet():
"""This function displays 'Hello World!'"""
print('Hello World!')
以上,我們已經定義了greet()
函數。第一個語句是一個 docstring,它提到了這個函數的功能。第二種類似的方法是打印方法,將指定的字符串顯示到控制台。 注意沒有退貨單。
要調用一個已定義的函數,只需在代碼中的任何地方使用它的名稱作為語句。例如,上面的函數可以用括號greet()
來調用。
Example: Calling User-defined Function
greet()
Output
Hello World!
默認情況下,如果返回語句不存在,所有函數都會返回None
。
Example: Calling User-defined Function
val = greet()
print(val)
Output
None
幫助()功能顯示文檔字符串,如下圖所示。
Example: Calling User-defined Function
>>> help(greet)
Help on function greet in module __main__:
greet()
This function displays 'Hello World!'
功能參數
可以定義一個函數來接收一個或多個參數(也稱為參數),並在功能塊內使用它們進行處理。參數/自變量可以被賦予合適的正式名稱。greet()
函數現在被定義為接收名為name
的字符串參數。在該功能中,print()
語句被修改以顯示發送給接收參數的問候信息。
Example: Parameterized Function
def greet(name):
print ('Hello ', name)
greet('Steve') # calling function with argument
greet(123)
Output
Hello Steve
Hello 123
函數定義中使用的參數名稱為形式參數。調用函數時實際使用的對象稱為實際參數。
使用parameter:type
語法,函數參數可以有注釋來指定參數的類型。例如,以下注釋了參數類型字符串。
Example: Parameterized Function
def greet(name:str):
print ('Hello ', name)
greet('Steve') # calling function with string argument
greet(123) # raise an error for int argument
多個參數
一個函數可以有多個參數。下面的函數接受三個參數。
Example: Parameterized Function
def greet(name1, name2, name3):
print ('Hello ', name1, ' , ', name2 , ', and ', name3)
greet('Steve', 'Bill', 'Yash') # calling function with string argument
Output
Hello Steve, Bill, and Yash
未知的參數數量
如果您不知道用戶將要傳遞的參數數量,Python 中的函數可以通過將*
放在參數之前來獲得未知數量的參數。
Example: Parameterized Function
def greet(*names):
print ('Hello ', names[0], ', ', names[1], ', ', names[3])
greet('Steve', 'Bill', 'Yash')
Output
Hello Steve, Bill, and Yash
下面的函數可以處理任意數量的參數。
Example: Parameterized Function
def greet(*names):
i=0
print('Hello ', end='')
while len(names) > i:
print(names[i], end=', ')
i+=1
greet('Steve', 'Bill', 'Yash')
greet('Steve', 'Bill', 'Yash', 'Kapil', 'John', 'Amir')
Output
Hello Steve, Bill, Yash,
Hello Steve, Bill, Yash, Kapil, John, Amir
帶有關鍵字參數的函數
為了調用帶有參數的函數,必須提供相同數量的實際參數。但是,可以通過以任何順序使用參數名傳遞參數值來調用函數。例如,下面使用參數名傳遞值。
def greet(firstname, lastname):
print ('Hello', firstname, lastname)
greet(lastname='Jobs', firstname='Steve') # passing parameters in any order using keyword argument
Output
Hello Steve Jobs
關鍵字參數**kwarg
該函數可以有一個前綴為**
的參數。這種類型的參數初始化為新的有序映射,接收任何多餘的關鍵字參數,默認為相同類型的新空映射。
Example: Parameterized Function
def greet(**person):
print('Hello ', person['firstname'], person['lastname'])
greet(firstname='Steve', lastname='Jobs')
greet(lastname='Jobs', firstname='Steve')
greet(firstname='Bill', lastname='Gates', age=55)
greet(firstname='Bill') # raises KeyError
Output
Hello Steve Jobs
Hello Steve Jobs
Hello Bill Gates
使用**
參數時,參數的順序無關緊要。但是,參數的名稱必須相同。 使用paramter_name['keyword_argument']
訪問關鍵字參數的值。
如果函數訪問關鍵字參數,但是調用代碼沒有傳遞該關鍵字參數,那麼它將引發KeyError
異常,如下所示。
Example: Parameterized Function
def greet(**person):
print('Hello ', person['firstname'], person['lastname'])
greet(firstname='Bill') # raises KeyError, must provide 'lastname' arguement
Output
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
greet(firstname='Bill')
File "<pyshell#19>", line 2, in greet
print('Hello ', person['firstname'], person['lastname'])
KeyError: 'lastname'
帶默認值的參數
定義函數時,可以為其參數指定默認值。如果在調用函數時傳遞了適當的實際參數,則該默認值將被替換。但是,如果沒有提供實際參數,將在函數內部使用默認值。
下面的greet()
函數是用具有默認值'Guest'
的name
參數定義的。 只有通過一些實際的參數,才會被替換。
Example: Parameter with Default Value
def greet(name = 'Guest'):
print ('Hello', name)
greet()
greet('Steve')
Output
Hello Guest
Hello Steve
帶返回值的函數
大多數時候,我們需要函數的結果用於進一步的處理。因此,當函數返回時,它也應該返回值。
用戶定義的函數也可以通過在 return 語句前放置一個表達式來向調用環境返回值。在這種情況下,返回值必須賦給某個變量。
Example: Return Value
def sum(a, b):
return a + b
可以調用上面的函數並提供值,如下所示。
Example: Parameter with Default Value
total=sum(10, 20)
print(total)
total=sum(5, sum(10, 20))
print(total)
Output
30
35
原創文章,作者:IIUMO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129244.html