אז כתבתי את הקוד לאיחוד CSV ועבדתי עליו הרבה ועשיתי הרבה שינויים.
בסוף הכל עבד כמו שצריך, ואז שעברתי על הפונקציות וגם הבודק האוטומטי אמר לי שאחד הערכים שאני משתמשת בהם לא מוגדר, ואכן הוא הוגדר בזמנו בקוד שכתבתי, אבל באחת מעריכות הקוד מחקתי אותו אבל הקוד המשיך לרוץ בלי בעיות ולעשות את מה שהוא צריך לעשות למרות שהמשתנה הזה ספציפית היה חשוב. קרה לי באותו קוד עוד משהו דומה, הקוד רץ ואז שעברתי עליו ראיתי שיש בעיה חמורה כי ההגדרה שם של משהו לא הייתה טובה ולא הבנתי איך זה רץ.
חשוב לי להגיד שבוודאות הכל רץ כל פעם ובוודאות שינה את הקובץ (כלומר זה לא שזה עבד פעם ופשוט פתחתי קובץ ישן שהכל בו מאוחד וחשבתי שזה עבד) כי עבדתי כל הזמן עם אותו קובץ חדש והוא השתנה כל הזמן עם שינוי הקוד שלי.
האם זה מקריות? כלומר למרות שאני חשבתי שהמשתנה הזה סופר קריטי הוא כנראה לא היה? בכל מקרה אבל הקוד לא היה אמור לרוץ כי באמצע הקוד יש משתנה שלא קיים. חשבתי אולי הוא זוכר את המשתנה הזה מפעם או משהו אחר? אני לא בטוחה מה לחשוב. זה ממש מוזר
תודה!
itamaraviv
ברגע שמשתנה מוגדר באיזשהו תא במחברת והתא הורץ אז פייתון מגדיר את המשתנה במחברת “וזוכר אותו”. טעות נפוצה היא להשתמש במשתנים שהוגדרו מחוץ לפונקציות ואז באמת מופיעות השגיאות האלה בבודק האוטומטי. אז אכן הניחוש שלך היה נכון. הקפידי להגדיר משתנים רק בתוך פונקציות ולא בתאים חיצוניים וזה לא יקרה לך יותר.
aviadamar
בהחלט קורה לי לפעמים גם הוא פשוט זוכר את המשתנה.
מה שאיתמר אמר
hadas.nevenzal
הוא לא הופיע מחוץ לפונקציה, הוא לא הופיע בכלל.
כתבתי אותו בזמנו מחוץ לפונקציה, אבל אז מחקתי אותו גם משם.
זה בגדול קרה כי כתבתי משהו בתוך ה"תוכנית: ואז החלטתי להעביר את הכל לפונקציה נפרדת, ואז כשחזרתי לתוכנית אחרי כמה שעות ועשרות שורות מחקתי את המשתנה הזה לגמרי. הוא לא היה שם בכלל. והדבר השני המוזר שקרה שנזכרתי בו עכשיו זה שקראתי לפונקציה שלא קיימת. כלומר יצרתי פונקציה, קראתי לה, כמה שעות אחר כך שיניתי את השם של הפונקציה אבל שכחתי לשנות את השם שלה מתי שקראתי לה ושוב הכל עבד ופשוט לא הבנתי איך זה עובד. עזוב איך הפונקציה עובדת, איך פייתון לא הקפיץ לי שגיאה שהשם של הפונקציה שקראתי לה לא מוגדר.
itamaraviv
ברגע שתא עם קוד מסוים הורץ פייתון שומר את הפונקציות והמשתנים. גם אם נמחק את התא, כל עוד לא עשינו restart kernel או דרסנו את השם שלהם , כל המשתנים והפונקציות שהוגדרו נשמרים על ידי פייתון.
לייק 1
hadas.nevenzal
תודה זה מה שחשבתי.
קצת מדאיג בסוף מקשה לעלות על בעיות. אני אבדוק מעכשיו טוב יותר כל קוד שלי.
itamaraviv
אתם יכולים להריץ את הפונקציה dir() באיזשהו תא כדי לראות איזה דברים פייתון מכיר כרגע. לא להיבהל מדברים שאתם לא מכירים.