[爆卦]python全域變數修改是什麼?優點缺點精華區懶人包

為什麼這篇python全域變數修改鄉民發文收入到精華區:因為在python全域變數修改這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者mantour (朱子)看板Python標題Re: [問題] 修改其他檔案的全域變數時間Mon ...


不知道你所說的改變 A.py中 AAAA的內容的意思是什麼

載入 A.py (import A) 之後可以改變namespace裡的A.AAAA的值

但是並不會改變A.py這個檔案的內容

不過依你的順序我執行起來是沒問題的

---A.py---
AAAA=False
def setA():
global AAAA
AAAA=True
def getA():
return AAAA
class Test1():
def AisTrue(self):
return getA()
---end---

---B.py---
class Test2():
def changeA(self):
import A
A.setA()
---end---

---main.py---
import A # 讀入 A.py
import B # 讀入 B.py
test1=A.Test1() # 產生一個Test1物件
test2=B.Test2() # 產生一個Test2物件
print "\n getA:", test1.AisTrue() # 執行test1的AisTrue() method:
# 這邊會回傳False
test2.changeA() # 執行test2的changeA() method:
# A.AAAA 此時重設為 True
print "\n getA:", test1.AisTrue() # 執行test1的AisTrue() method:
# 此時回傳True
---end---

執行結果:

# python main.py

getA: False

getA: True







※ 引述《frankofranko (池上米)》之銘言:
: 我是python的新手
: 很多觀念還不太懂..
: google不到又有點緊急只好來po文
: 希望能有人幫我解答QQ
: 問題如下
: 兩個檔案有問題的部分大致如下
: A.py
: global AAAAA
: AAAAA = False
: def setA():
: global AAAAA
: AAAAA = True
: def getA():
: global AAAAA
: print"get A: ",AAAAA
: class test():
: def A_True():
: getA()
: B.py
: class test2():
: def changeA():
: import A
: A.setA()
: 程式執行的順序為
: 1.先執行到A.py 有了一個test的物件 並且執行一次A_True() 印出False
: 2.執行到B.py 有了一個test2的物件 並且執行一次changeA()
: (期待在這邊把A.py裡的AAAAA變成True)
: 3.又回來使用先前那個test的物件 這時候執行A_True 仍然印出False
: 這是為什麼呢??
: 應該要怎麼改才會對呢?
: 不好意思了這種問題好像很基本...
: 謝謝大家!!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.57.113.89
※ 編輯: mantour 來自: 61.57.113.89 (06/25 09:46)
frankofranko:恩恩就是你說的這樣~ 06/25 11:34
frankofranko:可能是我拿來用的程式有點大 06/25 11:35
frankofranko:所以架構不只是我想得這樣 我這邊弄出來就都是False 06/25 11:36
frankofranko:不過我應該有辦法避免用這種方法寫了 06/25 11:36
frankofranko:謝謝!! 還幫我跑程式QQ 06/25 11:37
mantour:不客氣 希望你的問題有解決 06/25 16:02

你可能也想看看

搜尋相關網站