fb pixel

Փոփոխականների տիրույթ

Մենք կարող ենք հայտարարել փոփոխականներ ֆունկցիաների, ցիկլերի կամ օրինակ պայմանների բլոկների մեջ։ Մենք օրինակ կարող ենք ունենալ total փոփոխականը հայտարարված if բլոկի մեջ.
hello = 0
if a == 'hey':
	total = 10
	print(total)        # 10
print(hello, total)   # NameError: name 'total' is not defined
Սա նշանակում է, որ total փոփոխականը հայտարարվել է if պահմանի բլոկի մեջ, բայց հասանելի չէ բլոկից դուրս։
Նույնը կարող ենք ասել ցիկլերում կամ ֆունկցիաներում հայտարարված փոփոխականների մասին.
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։ Այս նույն global հրամանը կարող է օգտագործվել պայմաններում կամ ցիկլերում գլոբալ փոփոխականների հետ աշխատելիս։

Առաջադրանք

Ունենալով ստորև տրված ֆունկցիան փորձեք գտնել և ուղղել սխալը։ Ֆունկցիան պետք է վերադաձնի իրեն փոխանցված բոլոր արժեքների գումաը։
total = 0

def compute_sum(val):
	total = total + val
	return val

print(compute_sum(10))
print(compute_sum(20))
print(compute_sum(30))
To check your solution you need to sign in
Sign in to continue