6.1. 函數 (function)
函數(或稱函式)是一個有名稱且功能獨立的程式碼區塊,函數可以輸入們任何類型及數量的參數,並且函數會回傳任何類型及數量的回傳值。對一個函數可以做兩件事:
- 定義它
- 呼叫它
定義函數
def 函數名稱(參數):
執行此處的程式碼
首先,定義一個沒有輸入參數及回傳值的函數。
- 參考檔案:say_hello.py
# 定義函數
def say_hello():
print('Hello!')
# 主要程式碼
# 呼叫函數
say_hello()
# 執行結果
Hello!
接者,修改上述函數為有一個輸入參數及設定其預設值,但是沒有回傳值的函數。在使用這個函數時,當使用者沒有輸入參數時,則該函數會使用參數的預設值。
- 參考檔案:say_hello_to.py
# 定義函數
def say_hello_to(name='Everyone'):
print('Hello ' + name + '!')
# 主要程式碼
# 呼叫函數
say_hello_to('Girl')
say_hello_to('Sir')
say_hello_to()
# 執行結果
Hello Girl!
Hello Sir!
Hello Everyone!
此外,也可以定義一個函數有回傳值,使用 return 關鍵字來回傳數值或資料等。None 關鍵字在下列程式碼為一個回傳值,表示回傳一個「 沒有」值的意思。
# 定義函數
def say_hello_to(name='Everyone'):
print('Hello ' + name + '!')
return None
# 主要程式碼
# 呼叫函數
a = say_hello_to('Girl')
print(a)
# 執行結果
Hello Girl!
None
關於回傳值的另一個例子是先前常被使用的 len(),當我們對一個串列使用 len() 時,len() 會回傳一個整數來表示在此串列中有多少個資料。
>>> l = list(range(1, 6))
>>> l
[1, 2, 3, 4, 5]
>>> len(l)
5
程式說明
當參與一個團隊一起執行程式專案時,有時候別人會使用到你所寫的函數或檔案,此時如果可以在函數中加入程式說明的敘述,則可以幫助別人快速理解此函數或檔案的作用,包含輸入參數、函數用途、回傳值及使用範例等。
- 參考檔案:say_hello_to_doc.py
# 定義函數
def say_hello_to(name='Everyone'):
""" Say hello to a target.
This function is getting a input parameter from a user
to decide a target who is going to say hello to.
Args:
name (str): target's name. Default to 'Everyone'.
Returns:
No return value
Examples:
>>> say_hello_to('Sir')
Hello Sir!
>>> say_hello_to()
Hello Everyone!
"""
print('Hello ' + name + '!')
# 主要程式碼
# 呼叫函數
say_hello_to('Girl')
say_hello_to('Sir')
say_hello_to()
# 執行結果
Hello Girl!
Hello Sir!
Hello Everyone!
參考資料
- Example Google Style Python Docstrings
- PEP 257 -- Docstring Conventions
- Python自動化的樂趣, 第三章, Al Sweigart 著、H&C 譯, 碁峰
- Python編程入門第3版(簡), 第五章, Toby Donaldson著, 人民郵電出版社
- 精通Python, 第四章, Bill Lubanovic著, 賴屹民譯, 歐萊禮