פייתון/פייתון גרסה 3/טווח
טווח (scope) הוא האזור בו מוגדר משתנה בפייתון. בדרך כלל ניתן לזהות טווחים באמצעות הזחה.
פונקציות
עריכההמשתנים והפרמטרים בפונקציה נקראים "משתנים מקומיים" (Local variables) לעומת הפרמטרים שנמצאים מחוץ לפונקציה ונקראים "משתנים גלובלים" (global). בעוד אנו יכולים לשנות את המשתנים המקומיים, לא נוכל לשנות את הערכים הגלובליים.
x=0
def square():
x=2
return 4*x+x
print(x)
הוא משתנה גלובלי. הוא משתנה של הפונקציה. בד"כ מקובל לתת שמות שונים לערך מקומי וגלובלי באותו רצף של פקודות.
כאמור, פרק משתנים, פייתון זוכרת את המשתנה האחרון שהוקלד בה:
y=0
def a():
y=1
print(y)
#print the vaule of the function:
a()
#print vaule y:
print('the vaule of y is: ', y)
>>>1
>>>the vaule of y is: 0
פייתון מזהה את המשתנה y המוגדר בתוך הפונקציה כאחד ולכן הדפיסה אחד. מחוץ לפונקציה, המשתנה y=0 ולכן ההדפסה עבורו היא 0.
טווח (scope) הוא התחום בו מוגדר המשתנה. יש לנו שני טווחים שונים עבור הערך y. אחד בתוך הפונקציה והשני מחוץ לו.
global
עריכהפונקציה ללא משתנה גלובלי תחזיר הודעת שגיאה:
counter = 1
def number():
for i in (1,2,3):
counter +=1
number()
print(counter)
>>>Traceback (most recent call last):
File "C:/Users/user/Downloads/de/t4.py", line 16, in <module>
number()
File "C:/Users/user/Downloads/de/t4.py", line 15, in number
counter +=1
UnboundLocalError: local variable 'counter' referenced before assignment
אם נרצה להגדיר את המשתנה שבפונקציה לפי המשתנה הגלובלי נוכל להעזר ב-global:
counter = 1
def number():
global counter
for i in (1,2,3):
counter +=1
number()
print(counter)
>>>4
הפונקציה global מקבלת את המשתנה הגלובלי ומפעילה אותו בפונקציה. נשם לב כי המשתנה הגלובלי שנה את ערכו!