我已經開始學習python,並且正在閱讀其他人編寫的腳本。我注意到,全局分散在整個腳本(我不喜歡它)..除此之外,我還注意到,當我有這樣python變量作用域
def some_function():
foo.some_method()
# some other code
if __name__ == '__main__' :
foo = Some_Object()
some_function()
代碼,即使我不FOO進入some_function(),但some_function仍然可以操作foo(??!)。我不太喜歡這個,雖然它有點類似於Javascript關閉(?)。我想知道是否有可能阻止some_function()訪問foo,如果foo沒有作爲函數參數傳入?或者這是Python中的首選方式! (我使用python 2.5 ubuntu下頑強的時刻)
剛剛完成刪除全局變量,我目前正在尋找nonlocals(周圍函數的本地 - 用於嵌套函數) 我想減少非本地使用的數量,可能是因爲我從PHP編碼帶來的習慣 - if一個變量不會被傳遞到一個函數中,那麼這個變量就不存在於函數中(IMO,如果不好的事情發生,它更容易調試) – Jeffrey04
@Jeffrey,對於全局變量,但是非地址變量,特別是如果函數只是訪問它們並且不重新分配它們(後者實際上只是在2.6以後的版本中使用'nonlocal'關鍵字),這並不是一個真正的問題 - 而且我根據幾十年來的難得經驗進行講解;-)。 –
@亞歷克斯感謝信息 – Jeffrey04