Մենք կարող ենք հայտարարել փոփոխականներ ֆունկցիաների մեջ, որոնք հասանելի չեն լինի ֆունկցիայից դուրս։ Կամ կարող ենք հայտարարել փոփոխականներ, որոնք կունենան նույն անունը, ինչ ֆունկցիաներից դուրս փոփոխականները, և 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))