אורח‏ משהוא באמת מבין איך נשמר או לא נשמר קונטקסט של למבדות בפיתון
יש AI שזה די פותר בעיות, אבל בניגוד ללמבדות ב js, יש תחושה שלפעמים הקונטקסט של הלמבדה ב python נעלם באופן שרירותי כמו callback ב js, ולפעמים נשמר כמו למבדה ב- js....
במיוחד כשהלמבדות מועברות במערך או tuple או dictionary
 
אורח‏
אני אתן דוגמא: אם יש למדה בפיתון אז למה בסוף מגיעים לזה שחיבים:

קוד

        def cb(val, property_path=property_path):
            toggle_callback(property_path, val)

        result.append((midiMsgType, led_id, cb))
 
mksoft‏ Site Admin
lambda בפייתון הן late binding, הקוד הפנימי "משוערך" כאשר הוא מורץ, לא כאשר הוא מוגדר.

_________________
הבלוג שלי
 
אורח‏
זה נראה כמו התעצלות ליידי חובה של בוני השפה, כי *הכל* בפיתון מוערך בזמן אמת, לא טרחו לעשות
את המצופה כמו arrow function ב- js.

אפשר לומר שזה נובע או מחלחל מה cpp אבל ב cpp יש אופציה מסודרת להעביר משתנים ספציפים בקונטקסט, כאן הם החליטו בשביל כולם ש..לא ו... להכל.
 
mksoft‏ Site Admin
לא קשור להתעצלות, כך זה התכנון של השפה. בכל מקרה, אפשר להעביר ערכים לקונטקסט בתור ארגומנטים עם ערכי ברירת מחדל (ולא לשכוח להזהר עם mutables).

דוגמה:
https://stackoverflow.com/a/2295368

_________________
הבלוג שלי
 
כל הזמנים הם GMT + 2 שעות
   
PNphpBB2 © 2003-2004