2013-03-24 14 views
6

मैं कुछ कार्यों में कुछ वैश्विक चर घोषित करने और फ़ाइल को उन कार्यों के साथ आयात करने की कोशिश कर रहा हूं। हालांकि, मुझे लगता है कि दूसरी फ़ाइल में फ़ंक्शन चलाने से वैश्विक चर नहीं बन जाएगा। मैं एक ही नाम के साथ एक और वैरिएबल बनाने की कोशिश की, लेकिन जब मैं चर प्रिंट आउट, यह दूसरा फ़ाइल, नहीं वैश्विक मूल्यपायथन वैश्विक चर स्कॉइंग

globals.py

def default(): 
    global value 
    value = 1 

main.py

का मूल्य बाहर प्रिंट
from globals import * 
value = 0 
def main(): 
    default() 
    print value 

if __name__=='__main__': 
    main() 

यह प्रिंट करेगा 0. यदि मेरे पास मुख्य में value = 0 नहीं है, तो प्रोग्राम त्रुटि (मान परिभाषित नहीं किया जाएगा)।

तो मैं समारोह के globals.py बाहर में value घोषित, main.py बल्कि default()

में सेट मान से वैश्विक value के मूल्य पर ले जाएगा, क्या value प्राप्त करने के लिए एक वैश्विक चर होने के लिए उचित तरीका है अजगर में?

उत्तर

5

पायथन में ग्लोबल्स उनके मॉड्यूल के लिए केवल वैश्विक हैं। ऐसे कोई नाम नहीं हैं जिन्हें आप संशोधित कर सकते हैं जो पूरी प्रक्रिया के लिए वैश्विक हैं।

आप पूरा कर सकते हैं कि आप इस के साथ हैं:

globals.py:

value = 0 
def default(): 
    global value 
    value = 1 

main.py:

import globals 
def main(): 
    globals.default() 
    print globals.value 

if __name__ == "__main__": 
    main() 

मुझे पता नहीं है कि क्या है इस तरह एक वैश्विक हालांकि, आपकी समस्या को हल करने का सबसे अच्छा तरीका है।

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