פייתון/פייתון גרסה 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. אחד בתוך הפונקציה והשני מחוץ לו.


פונקציה ללא משתנה גלובלי תחזיר הודעת שגיאה:

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

תנאים

עריכה
  1. ראה: פייתון/פייתון גרסה 3/טווח של ביצוע מותנה