Re: [問題] 關於全域變數

看板Python作者 (sbr)時間16年前 (2008/12/24 00:12), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
※ 引述《rushcat (嗯)》之銘言: : 不太懂關於全域變數的用法 : ============================== : global x : x = 0 : def A(): : x = 10 : B() : def B(): : x = 20 : ============================== : 明明宣告了 x 全域變數 : 但是子程式賦予x的值 似乎僅對子程式裡的x有作用 : 想請問 這樣全域變數的意義是什麼 XD? : 另外想請問 如果真的需要做全域變數 該怎麼作比較適當!? global directive 通常不是這樣使用。 global 用在 nested scope 可以讓接下來對被指定的 symbol 作 assignment 的語意改變: x = 0 def A(): global x x = 10 B() def B(): x = 20 print x ### output: 0 A() print x ### output: 10 如果 function: A 裡沒有 global x statement(應該比較接近 directive), 那麼 x = 10 這個 statement 會把 int object bind 到 function A 執行 時的 local namespace dictionary,而不是 global dictionary。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.136.126 ※ 編輯: sbrhsieh 來自: 218.173.136.126 (12/24 00:15) ※ 編輯: sbrhsieh 來自: 218.173.136.126 (12/24 00:29)

12/24 00:35, , 1F
謝謝你!!! 我剛以為我想通了 就刪文了 真不好意思XD
12/24 00:35, 1F

12/24 00:35, , 2F
因為習慣寫VB 所以還不太能改變思考模式XD
12/24 00:35, 2F

01/02 13:00, , 3F
其實最好儘量不要用到global吧,看看能不能包起來
01/02 13:00, 3F
文章代碼(AID): #19KGtU49 (Python)
文章代碼(AID): #19KGtU49 (Python)