לדלג לתוכן

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

תנאים

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