היוש כולם,
יש משהו שאני נתקעת בו כל פעם מחדש ולא יודעת למה לא מסתדר לי כבר.
כאשר אני מחזירה ערך מתוך פונקציה ומנסה להשתמש בערך הזה אח"כ אני לא מצליחה.
הכוונה היא פונקציה א’ שמבצעת פעולה ומחזירה למשל רשימה שקראתי לה list_of_names.
אח"כ אני רוצה בפונקציה אחרת לגשת לlist_of_names אבל מקבלת הודעה שהאיבר הזה לא מוגדר.
אם החזרתי אותו מהפונקציה למה פייתון לא מזהה אותו ואיך אני עושה שכן יזהה.
אני מבזבזת על זה זמן ומרגישה שאני יודעת איזה פונקציות עליי ליצור ואיך ונתקעת בקריאה לנתונים שהחזרתי.
מקווה שזה היה ברור.
תודה!
לייק 1
Yam
היי מרווה,
דברים שחשוב לזכור על פונקציות:
המילה return מסיימת את הריצה שלהן
עדיף לא לעשות input/print בתוכן אלא להשתמש בפרמטרים/return במקום
כשהפונקציה מפסיקה לרוץ, כל המשתנים שהיא הגדירה “מתים”.
מה שהתפספס זה כנראה סעיף 3.
אפשר לפתור את זה ע"י return לערך שאת רוצה “לייצא” מתוך הפונקציה.
מה ש־return יעשה זה “יחליף” את המקום שקרא לפונקציה שלך בערך שמופיע אחרי המילה return.
האם זה מובן ועונה לשאלה שלך?
לייק 1
common.typo
הערך שחוזר, “צף באויר” וצריך לבצע השמה(משתנה = ) או פעולה (נניח print) כדי לממש/להגדיר אותו.
הבנתי נכון?
לייק 1
marva_noah
מובן, וזה מה שהבנתי גם עד כה.
בדוגמא שנתתי עשיתי return list_of_names.
כשאני רוצה להשתמש בlist_of_names בהמשך זה אומר שהיא לא מוגדרת למרות שהחזרתי אותה. שם אני נתקעת
לייק 1
marva_noah
אני חושבת שהבנת בדיוק. אז אני צריכה לעשות השמה לערך הזה אחרי שהפונקציה סיימה? בתוך הפונקציה החדשה בעצם?
לייק 1
Yam
מצוין, רק שימי לב ש־return list_of_names זה לא מספיק.
מה שחסר זה בדיוק מה ש־@common.typo העלה: list_of_names לא מוגדרת מאליה בחוץ.
אז לדוגמה:
def inc(a):
b = a + 1
return b
לא ינגיש לנו את b בחוץ.
נצטרך לעשות דבר כזה כדי ש־b יהיה קיים מחוץ לפונקציה:
def inc(a):
b = a + 1
return b
b = inc(5)
ושימי לב שלא מדובר באותו b. באותה מידה יכולנו גם:
def inc(a):
b = a + 1
return b
c = inc(5)
ו־c הוא משתנה חדש שמוגדר בחוץ, כאשר b איננה מוגדרת בחוץ.
marva_noah
אוקיי אני חושבת שהבנתי, בזבזתי על זה שעווות.
תודה רבה!!!
common.typo
היי ים,
נגיע מתישהו לדבר על scope ?
איפה זה יושב בלו"ז?
Yam
קצת מבאס, אבל מה שחשוב זה שהאסימון נפל תוך כדי תרגול
משוכנע שעכשיו עבודה עם פונקציות תשתפר אצלך משמעותית.
בהצלחה בהמשך התרגול!
Yam
מאמין שסביב שבוע 6 נדבר על scoping.
המטרה היא לבסס כמה שיותר את העניין באופן אינטואיטיבי ע"י תרגול ולדבר על זה כשזה מרגיש חלק יחסית.