Python 3.1 快速導覽 - 函數 參數

函數 (function) 所用的小括弧可以定義參數 (parameter) ,所謂的參數也就是提供給函數計算的數值 (value) ,或是物件 (object) 。形式如下

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






沒有留言: