def function_name(arg1, arg2): pass return something |
嚴格的學院區分函數定義時,小括弧中的變數為參數,呼叫函數時實際提供的數值稱為引數 (argument) ,於此,我們並不特別區分兩者的差別。
下例的 sum() 函數有一個參數 n ,函數回傳從 1 加到 n 所有正整數的和
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 )) # 《程式語言教學誌》的範例程式 # 檔名:def08.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

參數的數量並沒有限制,但每個參數需要用逗號分隔。下例的 sum() 函數有兩個參數 a 及 b ,函數回傳兩者的和
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 )) # 《程式語言教學誌》的範例程式 # 檔名:def09.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

數學上有個有趣的費博納西數列 (Fibonacci series) ,頭兩個數字為 0 和 1 ,之後的數字為前兩個數字的和。底下程式計算小於 n 的最大費博納西數 (Fibonacci number)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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 )) # 《程式語言教學誌》的範例程式 # 檔名:def10.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

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