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
沒有留言:
張貼留言