Путаница с глобальными переменными в python

У меня есть глобальные переменные, которые я использую в качестве переменных по умолчанию. В зависимости от того, что происходит в моей программе, мне нужна возможность изменить эти значения по умолчанию и сохранить изменения в оставшейся части моего кода. Я хочу, чтобы они были изменены и определены везде, поэтому я использовал глобальную переменную. Вот некоторый тестовый код, который показывает, как я пытаюсь изменить эти переменные.

Когда я делаю это, у меня возникают следующие проблемы...

  1. Программа считает, что myGlobalне был определен в main. Но она имеет. Почему?
  2. Когда я вызываю подпрограмму после изменения myGlobal. Я не хотел, чтобы это произошло.

Как правильно выполнить то, что я здесь пытаюсь сделать? Примеры?

#!/usr/bin/python

import sys

myGlobal = "foo"

print "********************"
print "MyGlobal %s" % myGlobal
print "********************"


def main(argv):

   #UnboundLocalError: local variable 'myGlobal' referenced before assignment
   print '1. Printing the global again: ' + myGlobal

   myGlobal = "bar"
   print "2. Change the global and print again: " + myGlobal

   # now call a subroutine
   mySub()

# Checks for output file, if it doesn't exist creates one
def mySub():
   # Why isn't the global "bar" not "foo"?
   print '3. Printing the global again: ' + myGlobal

   myGlobal = "black sheep"
   print "4. Change the global and print again: " + myGlobal




if __name__ == "__main__":
   main(sys.argv[1:])
6
задан codingJoe 30 March 2012 в 03:02
поделиться