זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/advanced-python3/lessons/variable-scope
זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/advanced-python3/lessons/variable-scope
מכיוון שמשתנים לא מוגדרים לבלוק אלא לסקופ הגדרתי פונקציה נפרדת שתבצע את פעולת ההוספה למערך הפונקציות
ובפונקציה הזאת המשתנה i עבור כל פונקציית lambda יהיה שונה
אני לא יודע אם זה הפתרון האולטימטיבי - אבל זה הפתרון שלי:
https://repl.it/repls/ObviousNeighboringLocatorprogram
הרפליט לא עובד (אולי פרטי? אולי הלינק לא נכון?) אבל ההסבר שלך כמעט מדויק. התיאור הנכון יהיה ״מכיוון שמשתנים לא מוגדרים לבלוק אלא לפונקציה״ - מילת המפתח כאן היא פונקציה ובכל מקרה נראה שהבנת את זה לפי הפיתרון והחלק השני של ההסבר.
פיתרון מעולה שים לב רק שבפייתון, בניגוד ל JavaScript, שמות פונקציה הם באותיות קטנות עם קו תחתי להפרדה - כלומר במקום appendFunc
צריך להיות append_func
arr = []
for i in range(5):
arr.append(lambda: print(i))
arr[0]()
אוליי זה?
אדם זה עדיין מדפיס 4 - אנחנו רוצים לכתוב את הקוד הזה כך שכל תא במערך יכיל פונקציה שתדפיס את מספר התא