在前面的幾節中已經看到,可以對全局變量和局部變量使用相同的變量名。Python 會在需要時自動創建新的局部變量,或者也可以用 global
關鍵字阻止它創建。不過,我強烈建議你不要重複使用變量名。
你可能已經從一些例子中注意到,往往很難知道一個變量是局部的還是全局的,這讓代碼更加混亂,因為存在同名的不同變量。而且,只要有混亂,錯誤就會乘虛而入。
所以對目前的狀況來說,建議你對局部變量和全局變量使用不同的名字。這樣就不會有混亂,也能把錯誤拒之門外。
你學到了什麼
在這一章,你學到了以下內容。
什麼是函數。
什麼是參數(argument 或 parameter)。
如何向函數傳遞一個參數。
如何向函數傳遞多個參數。
如何讓函數向調用者返回一個值。
變量作用域是什麼,什麼是局部變量和全局變量。
如何在函數中使用全局變量。
測試題
1. 使用哪個關鍵字來創建函數?
2. 如何調用函數?
3. 如何向函數傳遞信息(參數)?
4. 函數最多可以有多少個參數?
5. 如何從函數返回信息?
6. 函數運行結束後,函數中的局部變量會發生什麼?
動手試一試
1. 編寫一個函數,用大寫字母打印你的名字,就像這樣:
CCCC A RRRRR TTTTTTT EEEEEE RRRRR C C A A R R T E R RC A A R R T EEEE R RC AAAAAAA RRRRR T E RRRRR C C A A R R T E R R CCCC A A R R T EEEEEE R R
編寫一個程序多次調用這個函數。
2. 建立一個函數,可以打印全世界任何人名、地址、街道、城市、州或省、郵政編碼和國家。(提示:這需要 7 個參數。可以把它們作為單獨的參數傳入,也可以作為一個列表。)
3. 嘗試使用代碼清單 13-7 的例子,不過要求 my_price
是全局變量,以便看到結果輸出有什麼區別。
4. 編寫一個函數計算零錢的總面值,包括五分幣、二分幣和一分幣(類似於第 5 章中最後一個「動手試一試」問題)。函數應當返回這些硬幣的總面值。然後編寫一個程序調用這個函數。程序運行時應當得到類似下面的輸出:
quarters: 3dimes: 6nickels: 7pennies: 2total is $1.72