讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 13.3 向函數傳遞參數 >

13.3 向函數傳遞參數

現在來看括號做什麼用:它用來傳遞參數(argument)!

不,卡特,計算機非常聽話,它們永遠也不會爭論1。在編程中,參數這個詞是指你交給函數的一條信息。我們把這稱為:你向函數傳遞參數。

1argument 也有「爭論」的意思,卡特顯然是把這裡的 argument 理解為「爭論」了。——編者注

假設你希望對你的所有家庭成員使用這個地址打印函數。所有人的地址都是一樣的,但是每一次人名會有所不同。不能在函數中把人名硬編碼寫成 Warren Sande,你可以建立一個變量。調用函數時將這個變量傳遞到函數。

要說明這是如何工作的,最容易的方法就是舉例子。在代碼清單 13-2 中,我修改了地址打印函數,要使用一個對應人名的參數。參數是有名字的,就像其他變量一樣。我把這個變量命名為 myName

函數運行時,變量 myName 會填入調用函數時為它傳入的任何參數。調用函數時,我們把參數放在括號裡,通過這種方式將參數傳入函數。

因此,在代碼清單 13-2 中,參數 myName 賦值為 Carter Sande。

代碼清單 13-2 向函數傳遞參數

運行代碼,你會得到期望的結果:

>>> ===================== RESTART =====================>>>Carter Sande123 Main StreetOttawa, Ontario, CanadaK2M 2E9  

這看上去與第一個程序(沒有使用參數)得到的輸出完全相同。不過,我們每次可以用不同方式打印地址,比如:

printMyAddress("Carter Sande")printMyAddress("Warren Sande")printMyAddress("Kyra Sande")printMyAddress("Patricia Sande")  

現在每次調用函數時輸出都不同。人名會變,因為我們每次都向函數傳入了不同的人名。

>>> ============================ RESTART ============================>>>Carter Sande123 Main StreetOttawa, Ontario, CanadaK2M 2E9Warren Sande123 Main StreetOttawa, Ontario, CanadaK2M 2E9Kyra Sande123 Main StreetOttawa, Ontario, CanadaK2M 2E9Patricia Sande123 Main StreetOttawa, Ontario, CanadaK2M 2E9  

注意,我們向函數傳入什麼值,函數中就會使用什麼值,並作為地址的人名部分打印出來。

如果每次函數運行時有多個信息不同,就需要多個參數。下面就來討論這個問題。