जो आप चाहते हैं वह संभव नहीं है *। आप वैश्विक नामस्थान में केवल एक चर बना सकते हैं:
myglobal = "UGHWTF"
def main():
global myglobal # prevents creation of a local variable called myglobal
myglobal = "yu0 = fail it"
anotherfunc()
def anotherfunc():
print myglobal
ऐसा नहीं करें।
फ़ंक्शन का पूरा बिंदु यह है कि यह पैरामीटर लेता है। बस अपने कार्यों में पैरामीटर जोड़ें। यदि आपको लगता है कि आपको बहुत से कार्यों को संशोधित करने की आवश्यकता है, तो यह एक संकेत है कि आपको उन्हें कक्षा में एकत्र करना चाहिए।
*
विस्तारित करने के लिए यह क्यों संभव नहीं है: पायथन में चर घोषित नहीं किए जाते हैं - जब वे असाइनमेंट कथन निष्पादित होते हैं तो वे बनाए जाते हैं। इसका मतलब है कि निम्नलिखित कोड (astronautlevel द्वारा पोस्ट की गई कोड से प्राप्त) टूट जाएगा:
def setcake(taste):
global cake
cake = taste
def caketaste():
print cake #Output is whatever taste was
caketaste()
Traceback (most recent call last):
File "prog.py", line 7, in <module>
caketaste()
File "prog.py", line 5, in caketaste
print cake #Output is whatever taste was
NameError: global name 'cake' is not defined
यह इसलिए होता है क्योंकि जब caketaste
कहा जाता है, cake
करने के लिए कोई काम नहीं हुआ है। यह केवल setcake
के बाद ही होगा। http://ideone.com/HBRN4y
तुम सिर्फ में उस चर पारित नहीं की जा सकती तर्क के रूप में? –
हां, मैं कर सकता था, लेकिन मैं यह देखने की कोशिश कर रहा था कि मुख्य कार्य के अंदर वैश्विक युद्धों को परिभाषित करना संभव होगा, शायद यह एक बुरा विचार है ... – Dnaiel
वैश्विक चर केवल एक बार फिर से कोड होने के बाद परेशान हो जाते हैं। छोटे कोड के लिए, हालांकि, वे ठीक हैं। – astronautlevel