Մենք կարող ենք հայտարարել փոփոխականներ ֆունկցիաների մեջ, որոնք հասանելի չեն լինի ֆունկցիայից դուրս։ Կամ կարող ենք հայտարարել փոփոխականներ, որոնք կունենան նույն անունն ինչ ֆունկցիաներից դուրս փոփոխականները և Python-ը դրանք կհամարի լրիվ տարբեր փոփոխականներ.
name = 'Helen'
def greet():
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Helen
Այստեղ name փոփոխականը հայտարարված է greet() ֆունկցիայի մեջ և հասանելի է մինչև ֆունկցիայի բլոկի ավարտը։ Այն փոփոխականները, որոնք հայտարարված են ինչ-որ բլոկի մեջ սովորաբար ընդունված է անվանել լոկալ/local։ Այն պահին երբ ծրագիրը դուրս է գալիս ֆունկցիայից, այն «մոռանում է» այն բոլոր փոփոխականների մասին, որոնք հայտարարվել էին այդ ֆունկցիայի մեջ։
Փոփոխականներին հասանելիություն ունենալու համար և դրանց փոփոխելու համար մենք կարող ենք օգտագործել global հրամանը։ Այն հուշում է Python-ին, որ տվյալ փոփոխականը գլոբալ է։
name = 'Helen'
def greet():
global name
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Bob
Այս դեպքում greet() ֆունկցիան փոփոխում է name փոփոխականը, որը գլոբալ է։ Ֆունկցիան դարձնում է 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))