לדלג לתוכן

4.3 סקופ תרגול

משחק הסקופ

  • עבור על קטעי הקוד הבאים וחזה מה יודפס, לאחר מכן הריצו אותם כדי לבדוק אם צדקתם.
x = 10

def func():
    x = 20
    print(x)

func()
print(x)
x = 10

def func():
    print(x)

func()
def outer():
    y = 5
    def inner():
        print(y)
    inner()

outer()
def func():
    a = 1
    b = 2
    print(locals())

func()

חרא על global

  • קיימת פונקציה בשם counter שמחזירה מספר.
  • הפונקציה מחזירה מספר עולה.
  • דוגמה לשימוש:
    print(counter())  # 1
    print(counter())  # 2
    print(counter())  # 3
    

    הסבירו למה כנראה הפונקציה הזו לא טובה.

מציאת הבאג

  • הקוד הבא מנסה לספור כמה מחרוזות ברשימה, אבל יש בו בעיית סקופ. מצאו ותקנו אותו.
    def count_strings(items):
        for item in items:
            if isinstance(item, str):
                count = 0
                count += 1
        return count
    
    result = count_strings(["hello", 5, "world", True, "!"])
    print(result)
    

מי בסקופ?

  • כתבו פונקציה בשם show_scope שמקבלת פרמטר כלשהו, מגדירה שניים-שלושה משתנים מקומיים, ואז מדפיסה את כל המשתנים המקומיים בעזרת locals().
  • הדפיסו גם את המשתנים הגלובלים בעזרת globals() מחוץ לפונקציה.