網頁

2025年7月3日 星期四

函數參數的傳遞方式

 一、傳值呼叫:

函數內所使用的變數稱為區域變數,所以從外部變數傳值給函數,經函數內部程式計算後改變了變數的數值,也不會改變外部變數的數值,因為區域內變數的改變只在函數內變化而已,不影響到外部的變數。

如:

   
    def calc(a,b):
        s = a + b
        d = a - b
        a = s
        b = d
    a = 22
    b = 15
    print("執行前: a,b = ",a,",",b)
    calc(a,b)
    print("執行後: a,b = ",a,",",b)

▼ 程式執行結果 ..

執行前: a , b =  22 , 15

執行後: a , b =  22 , 15

從以上執行前後結果可以看出,使用傳值呼叫函式並不會影響外部變數的數值,只有函式內的區域變數才會改變。


二、傳址呼叫:

如果改使用變數的位址來傳遞數值給函式,經函式內程式計算後改變了變數位址內的數值,不論是函式的內、外部變數皆會同步改變,這是因為改變數值並不是變數本身,而是改變了變數位址裡面的數值。

如:


    def calc(a):
        s = a[0] + a[1]
        d = a[0] - a[1]
        a[0] = s
        a[1] = d
    a = [22,15]
    print("執行前: a = ",a)
    calc(a)
    print("執行後: a = ",a)

▼ 執行結果 ..

執行前: a =  [22, 15]

執行後: a =  [37, 7]

從以上傳址呼叫函式程式可以知道,使用變數位址傳遞資料給函式使用,則不論函式的內外部變數就會同步改變,這是寫程式的人需要特別留意的地方。


沒有留言:

張貼留言

TQC+ Python 證照考題評量(五十四) - 平均溫度

 一、主題介紹: 資料庫中的一堆數據資料,時常需要這些資料的平均值、最大值、與最小值,作為分析資料的依據,如能透過寫程式讓它們自動化就能增加效率,就來看看今天的 TQC+ 考題的練習。 (1) 題目 請撰寫一程式,讓使用者輸入四週各三天的溫度,接著計算並輸出這四週的平均溫度及最高...