2012-09-30 14 views
20

मेरी कोड में बदलाव नहीं इस प्रकार है:समारोह ग्लोबल चर

done = False 

def function(): 
    for loop: 
     code 
     if not comply: 
      done = True #let's say that the code enters this if-statement 

while done == False: 
    function() 

किसी कारण से जब मेरे कोड अगर बयान में प्रवेश करती है, यह है, जबकि पाश से बाहर नहीं होने के बाद यह समारोह के साथ किया जाता है()।

लेकिन, अगर मैं इसे इस तरह कोड:

done = False 

while done == False: 
    for loop: 
    code 
    if not comply: 
     done = True #let's say that the code enters this if-statement 

... यह जबकि पाश बाहर निकालता है। यहाँ क्या चल रहा है?

मैंने यह सुनिश्चित किया कि मेरा कोड if-statement में प्रवेश करता है। मैंने अभी तक डीबगर नहीं चलाया है क्योंकि मेरे कोड में बहुत सारे लूप हैं (बहुत बड़ी 2 डी सरणी) और मैंने इतनी थकाऊ होने के कारण डीबगिंग पर छोड़ दिया। जब यह कार्य में होता है तो "किया" कैसे बदला जा रहा है?

+0

आज पाइथन वैश्विक चर प्रश्नों के बहुत सारे हैं। – icktoofay

+0

धन्यवाद दोस्तों! विश्वास नहीं कर सकता कि यह इतना आसान था लेकिन यह निश्चित रूप से जावा/सी ++ से अलग स्पर्श है – cYn

उत्तर

30

आपकी समस्या यह है कि फ़ंक्शन अपना नामस्थान बनाते हैं, जिसका अर्थ है कि done फ़ंक्शन के भीतर दूसरे उदाहरण में done से भिन्न है। नया बनाने के बजाय पहले done का उपयोग करने के लिए global done का उपयोग करें।

def function(): 
    global done 
    for loop: 
     code 
     if not comply: 
      done = True 

कैसे global का उपयोग करने के बारे में एक व्याख्या here

4
done=False 
def function(): 
    global done 
    for loop: 
     code 
     if not comply: 
      done = True 

आप वैश्विक कीवर्ड का उपयोग करने के दुभाषिया जानते हैं कि आप वैश्विक चर done का उल्लेख होने देना होता है पाया जा सकता है, अन्यथा यह जा रहा है एक अलग व्यक्ति बनाएं जो केवल फ़ंक्शन में पढ़ा जा सके।

2

उपयोग global, तो ही आप एक वैश्विक चर संशोधित अन्यथा done = True समारोह के अंदर की तरह एक बयान एक नया स्थानीय चर done नामित घोषणा करेंगे कर सकते हैं:

done = False 
def function(): 
    global done 
    for loop: 
     code 
     if not comply: 
      done = True 

अधिक the global statement बारे में पढ़ें।

संबंधित मुद्दे