def function_name(arg1, arg2):
pass
return something嚴格的學院區分函數定義時,小括弧中的變數為參數,呼叫函數時實際提供的數值稱為引數 (argument) ,於此,我們並不特別區分兩者的差別。
下例的 sum() 函數有一個參數 n ,函數回傳從 1 加到 n 所有正整數的和
def sum(n):
i = 1
sum = 0
while i <= n:
sum += i
i += 1
return sum
print("1 + 2 + ... + 199 + 200 =", sum(200))
print("1 + 2 + ... + 299 + 300 =", sum(300))
print("1 + 2 + ... + 399 + 400 =", sum(400))
print("1 + 2 + ... + 499 + 500 =", sum(500))
print("1 + 2 + ... + 599 + 600 =", sum(600))
print("1 + 2 + ... + 699 + 700 =", sum(700))
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:def08.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

參數的數量並沒有限制,但每個參數需要用逗號分隔。下例的 sum() 函數有兩個參數 a 及 b ,函數回傳兩者的和
def sum(a, b):
return a + b
print(sum(1, 1))
print(sum(1, 2))
print(sum(2, 3))
print(sum(3, 5))
print(sum(5, 8))
print(sum(8, 13))
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:def09.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

數學上有個有趣的費博納西數列 (Fibonacci series) ,頭兩個數字為 0 和 1 ,之後的數字為前兩個數字的和。底下程式計算小於 n 的最大費博納西數 (Fibonacci number)
def sum(a, b):
return a + b
def fib(n):
i = 1
j = 1
while sum(i, j) < n:
i, j = j, sum(i, j)
return j
print(fib(100))
print(fib(200))
print(fib(300))
print(fib(400))
print(fib(700))
print(fib(1000))
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:def10.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

第 7 行
i, j = j, sum(i, j)
這是 Python 指派運算 (assignment operation) 的一個技巧,依逗號區隔的順序,等號右邊的值會依序傳遞給等號左邊的變數。
| 中英文術語對照 | |
|---|---|
| 函數 | function |
| 參數 | parameter |
| 數值 | value |
| 物件 | object |
| 引數 | argument |
| 費博納西數列 | Fibonacci series |
| 費博納西數 | Fibonacci number |
| 指派運算 | assignment operation |
參考資料
http://docs.python.org/py3k/tutorial/controlflow.html
http://docs.python.org/py3k/reference/compound_stmts.html
http://docs.python.org/py3k/tutorial/controlflow.html
http://docs.python.org/py3k/reference/compound_stmts.html
沒有留言:
張貼留言