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() מחוץ לפונקציה.