作者:
Arim (象山下智久)
2014-11-28 23:24:02hi,各位版友好
def foo():
print sys
if __name__ == '__main__':
sys = "aaa"
foo()
為什麼 foo 可以存取到 sys?
謝謝
作者:
DemonDeath (Beethoven Virus)
2014-11-28 23:51:00不行吧
因為if並不是函式 不會形成區域變數你寫的程式裡 sys仍會變成全域變數可試著在最後print(globals()) 可看到全部的全域變數
作者: ocean5566 (煙大屌熟男) 2014-11-29 00:13:00
? 你覺得不行的點在哪裡?function裡面找不到變數 會往上找 直到盡頭
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2014-11-29 00:14:00寫過 C-like 語言的人第一直覺應該都會是不行
作者: ocean5566 (煙大屌熟男) 2014-11-29 00:15:00
sys就在上面 然後foo把它 印出來 有何問題 ....?
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2014-11-29 00:17:00但 Python 變數其實是 function/module scoped, 和 C 或Java 家族的 block scoped 不一樣, 所以認知要稍微調整
作者:
eric541 (YcK)
2014-11-29 15:30:00u大有說了因為 Python 是 function/module scope所以單純寫在 if 內的變數其實不會只在 if 內而是global
作者: ocean5566 (煙大屌熟男) 2014-11-29 15:34:00
用中文觀點去理解英文文法 那你一輩子都學不會英文 end
作者:
ck574b027 (荒圍!定厝!賊!妹!)
2014-12-03 18:06:00並沒有"變成 global variable",它就是 variable,if 不會新增 scope。