जब हम फ़ंक्शन लिखते हैं, तो हो सकता है कि कुछ चर फ़ंक्शन के भीतर घोषित हों। उदाहरण के लिए, यदि एक चर name फ़ंक्शन के अंदर घोषित है, तो यह एक नया चर माना जाएगा, जो फ़ंक्शन के बाहर घोषित चर से पूरी तरह अलग होगा:
name = 'Helen'
def greet():
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Helen
फ़ंक्शन greet() में चर name घोषित है और उसका स्कोप फ़ंक्शन के अंत तक है। किसी विशेष स्कोप के भीतर घोषित चरों को आम तौर पर स्थानीय (local) चर कहा जाता है। जैसे ही प्रोग्राम फ़ंक्शन से बाहर निकलता है, वह उस चर को "भूल" जाता है।
वर्तमान स्कोप के बाहर के चरों तक पहुंचने और उन्हें संशोधित करने के लिए, हम global कीवर्ड का उपयोग कर सकते हैं ताकि Python को बताएँ कि हम उस चर को ग्लोबल मानना चाहते हैं:
name = 'Helen'
def greet():
global name
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Bob
इस बार greet() फ़ंक्शन ने ग्लोबल name चर को संशोधित किया और उसका मान Bob में बदल दिया।
चुनौती
निम्न फ़ंक्शन में गलती खोजें और उसे ठीक करें। इस फ़ंक्शन को अब तक पास किए गए मानों का योग वापस करना चाहिए।
total = 0
def compute_sum(val):
total = total + val
return val
print(compute_sum(10))
print(compute_sum(20))
print(compute_sum(30))