1,區域變數與全域變數
1,定義
區域變數:就是在函式體內的變數,在python中冒號“:”后面的變數都是區域變數,當然區域與全域也是一個相對的概念,比如出現函式嵌套的情況,
全域變數:就是在模塊中所有函式都可以呼叫的變數,一般在函式體外被定義,
2,使用程序
函式內的區域變數,在函式體外是不可以使用的,函式內的變數就是區域變數,只在函式體內生效,
例如,這里的discount(price,rate)函式,兩個形式引數price和rate,還有final_price都是函式的區域變數,
如果在函式體外使用就會出錯,
全域變數,比如這里的old_price,rate和new_price都是全域變數,因此可以在函式體內訪問他們,在python中,可以肆無忌憚地在函式體內部使用全域變數,但是如果在函式體內修改全域變數則會出錯,
其實,當在函式體內部呼叫全域變數時,是可以正常使用的,
但是當在函式體內部修改全域變數時,python是在函式體內部新創建了一個同名的區域變數,所以當我們在函式體內部列印該變數時,是修改后的值,但是當在程式外部列印正常的全域變數時,發現值并沒有被修改,正如小甲魚解釋的一樣,
如果一定要在函式體內部修改全域變數,可以在變數名前加 global關鍵字,如下所示:
3,注意事項
注意:python出現這種現象是一種程式的保護機制,因為全域變數在很多地方都會使用,不建議在函式體內部修改全域變數,如果有這一類的操作,會導致程式很難維護,就像這里小甲魚說的一樣,
如果你已經知道在函式中修改全域變數可能會導致可讀性變差、出現莫名其妙的BUG、代碼的維護成本成倍提高,但還是要堅持這么做,可以用global關鍵字來實作,
但是,如果遇到這種情況,思考一下,為什么要這么做,能不能把變數的位置挪到函式內部,讓它變成區域變數,如果可以,就不要使用全域變數,然后再函式里修改的操作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/551055.html
標籤:其他
下一篇:返回列表