看板 Python 關於我們 聯絡資訊
hi,各位版友好 def foo(): print sys if __name__ == '__main__': sys = "aaa" foo() 為什麼 foo 可以存取到 sys? 謝謝 -- ~宅男的四個徵兆~ ∠□ ○ ! * \○/ ★    (○ ? ╦╦└□ " ○□═ □   □> ║║√√ ╦══╦ ∥    |\ 一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.159.133.241 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1417188245.A.6E1.html
alibuda174: 可以嗎? 11/28 23:47
DemonDeath: 不行吧 11/28 23:51
已修改 ※ 編輯: Arim (49.159.133.241), 11/29/2014 00:01:26
alibuda174: 因為if並不是函式 不會形成區域變數 11/29 00:05
alibuda174: 你寫的程式裡 sys仍會變成全域變數 11/29 00:05
alibuda174: 可試著在最後print(globals()) 可看到全部的全域變數 11/29 00:06
ocean5566: ? 你覺得不行的點在哪裡? 11/29 00:13
ocean5566: function裡面找不到變數 會往上找 直到盡頭 11/29 00:14
uranusjr: 寫過 C-like 語言的人第一直覺應該都會是不行 11/29 00:14
ocean5566: sys就在上面 然後foo把它 印出來 有何問題 ....? 11/29 00:15
uranusjr: 但 Python 變數其實是 function/module scoped, 和 C 或 11/29 00:17
uranusjr: Java 家族的 block scoped 不一樣, 所以認知要稍微調整 11/29 00:17
為什麼寫在這個 if 裏面的會變成 global variable? ※ 編輯: Arim (49.159.133.241), 11/29/2014 13:47:25
eric541: u大有說了因為 Python 是 function/module scope 11/29 15:30
eric541: 所以單純寫在 if 內的變數其實不會只在 if 內而是global 11/29 15:31
ocean5566: 用中文觀點去理解英文文法 那你一輩子都學不會英文 end 11/29 15:34
ck574b027: 並沒有"變成 global variable",它就是 variable, 12/03 18:06
ck574b027: if 不會新增 scope。 12/03 18:11