2015-09-25 164 views
-1

我會盡量解釋我的情況舉例。全局變量在Python

register.py

def main(): 
    alprint = input("Enter something: ") 
    if alprint == "a": 
     def alCheck(): 
      global CheckDot 
      CheckDot = input("Enter your opinion: ") 
     def alTest(): 
      global CheckTest 
      CheckTest = input("Hope it works: ") 
     alCheck() 
     alTest() 
main() 

和content.py

from register import CheckTest 

if CheckTest == "ad": 
    print("You are welcome!") 

當我聲明此變量checkTest在一個子功能的(功能,alTest())主,使用全局和導入到另一個文件,它不工作,我嘗試了很多東西,但沒有。

+0

我覺得你在這裏比全局變量還有其他問題(無論如何他們通常都是個壞主意)。將這兩個函數定義移出if子句。而不是全局變量,使用''return''。 – proycon

+0

感謝您的回覆,您能否給我一個簡單的想法或示例? –

+0

嗯,我想,但是你不清楚你想要建立的是什麼。 – proycon

回答

2

工作,但如果用戶輸入的第一inputa以外的東西,沒有定義CheckTest,所以它提供了一個ImportError。你可能會想嘗試這樣的東西,而不是:

def main(): 
    global CheckTest, CheckDot 
    def alCheck(): 
     global CheckDot 
     CheckDot = input("Enter your opinion: ") 
    def alTest(): 
     global CheckTest 
     CheckTest = input("Hope it works: ") 
    alprint = input("Enter something: ") 
    if alprint == "a": 
     alCheck() 
     alTest() 
    else: 
     CheckTest = None 
     CheckDot = None 
main() 

這樣,CheckTest,並始終定義CheckDot