פייתון/פייתון גרסה 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 מקבלת את המשתנה הגלובלי ומפעילה אותו בפונקציה. נשם לב כי המשתנה הגלובלי שנה את ערכו!