2015-09-25 4 views
-1

я попытаюсь объяснить мою ситуацию с примерами:Глобальные переменные в кратные функций в Python

Im использованием глобальной объявить переменную, но эта работа только в функции, когда я пытаюсь другой суб функция не работает.

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

Это бы работа, за исключением того, что если пользователь вводит что-то другое, чем a для первого input, 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 всегда определены.

Смежные вопросы