קורס Advanced Python3 שיעור תחום הגדרה


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/advanced-python3/lessons/variable-scope

מכיוון שמשתנים לא מוגדרים לבלוק אלא לסקופ הגדרתי פונקציה נפרדת שתבצע את פעולת ההוספה למערך הפונקציות
ובפונקציה הזאת המשתנה i עבור כל פונקציית lambda יהיה שונה
אני לא יודע אם זה הפתרון האולטימטיבי - אבל זה הפתרון שלי:
https://repl.it/repls/ObviousNeighboringLocatorprogram

לייק 1

הרפליט לא עובד (אולי פרטי? אולי הלינק לא נכון?) אבל ההסבר שלך כמעט מדויק. התיאור הנכון יהיה ״מכיוון שמשתנים לא מוגדרים לבלוק אלא לפונקציה״ - מילת המפתח כאן היא פונקציה ובכל מקרה נראה שהבנת את זה לפי הפיתרון והחלק השני של ההסבר.

קישור תקין: https://repl.it/@ytmrdvdyn/python-3-var

פיתרון מעולה שים לב רק שבפייתון, בניגוד ל JavaScript, שמות פונקציה הם באותיות קטנות עם קו תחתי להפרדה - כלומר במקום appendFunc צריך להיות append_func

arr = []
for i in range(5):
    arr.append(lambda: print(i))
arr[0]()

אוליי זה?

אדם זה עדיין מדפיס 4 - אנחנו רוצים לכתוב את הקוד הזה כך שכל תא במערך יכיל פונקציה שתדפיס את מספר התא