में वैश्विक चर भ्रम मेरे पास एक वैश्विक चर है जो मैं डिफ़ॉल्ट चर के रूप में उपयोग कर रहा हूं। मेरे कार्यक्रम में जो होता है उसके आधार पर मुझे उन डिफ़ॉल्टों को बदलने की क्षमता की आवश्यकता होती है और मेरे कोड के शेष संचालन के माध्यम से परिवर्तन जारी रहते हैं। मैं उन्हें हर जगह बदलना और परिभाषित करना चाहता हूं इसलिए मैंने वैश्विक चर का उपयोग किया। यहां कुछ परीक्षण कोड दिए गए हैं जो दिखाते हैं कि मैं इन चरों को संशोधित करने का प्रयास कैसे कर रहा हूं।पाइथन
जब मैं यह कर मैं निम्नलिखित समस्या है ...
- कार्यक्रम सोचता है कि
myGlobal
मुख्य में परिभाषित नहीं किया गया है। लेकिन है। क्यूं कर? - जब मैं
myGlobal
बदलता हूं तो मैं एक सबराउटिन को कॉल करता हूं। मैं नहीं चाहता था कि ऐसा हो।
मैं जो करने की कोशिश कर रहा हूं उसे पूरा करने का सही तरीका क्या है? उदाहरण?
def main(argv):
global myGlobal
#...
myGlobal = "bar"
अन्यथा काम बस एक नया बना देगा:
#!/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:])