Varsayılan değişken olarak kullandığım genel değişkenler var. Programımda neler olduğuna bağlı olarak, bu varsayılanları değiştirme ve kodun kalan işlemi boyunca değişikliklerin devam etmesini sağlama yeteneğine ihtiyacım var. Her yerde değişmelerini ve tanımlanmasını istiyorum, dolayısıyla global bir değişken kullandım. İşte bu değişkenleri nasıl değiştirmeye çalıştığımı gösteren bazı test kodları.Python'da global değişkenler karışıklığı
Bunu zaman aşağıdaki sorunlar var ...
- programı
myGlobal
ana tanımlanan edilmediğini düşünüyor. Ancak vardır. Niye ya?myGlobal
myGlobal
değiştirdikten sonra bir alt yordamı çağırdığımda. Bunun olmasını istemedim.
Burada yapmaya çalıştığım şeyi gerçekleştirmenin uygun yolu nedir? Örnekler?
def main(argv):
global myGlobal
#...
myGlobal = "bar"
Aksi takdirde atama sadece yeni bir oluşturur: size atamak yerine bir işlev içinde bir modül-küresel değişkeni okumak istiyorsanız
#!/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:])