שאלה לגבי משהו לא מובן במחברת 3 שבוע 2(פונקציות)

שלום עד עכשיו רצתי בחומר והיה לי דיי קל זאת שפה שמאוד דומה לארדואינו שאני מתעסק בו :slight_smile:

  1. למה הפונקציות נרשמות ראשונות בסדר הכרונולוגי של הקוד ולא קודם האינפוטים?
  2. למה הפרמטרים של הפונקציה בפונקציה עצמה שונים מהפרמטרים בהפעלה של הפונקציה מה שמסומן בעיגול בתמונה(זה קצת מסבך אותי)?
  3. למה לצורך העניין אי אפשר להשתמש בreturn של הפונקציה בהדפסה
    למשל לרשום print(“This product has " + str(calories) + " calories in it.”)
    במקום להוסיף שורה של cal = xxxxxxxxxxx??

תודה לעוזרים וחג שמח

לייק 1

שאלות נהדרות אופק, אנסה להסביר:

  1. הפונקציות נרשמות בסדר הכרונולוגי של הקוד בגלל איך שפייתון קוראת את הקוד. היא עוברת שורה שורה, וכשהיא קוראת ל־calculate_calories הפונקציה חייבת להיות מוגדרת.
  2. הפרמטרים שונים מהארגומנטים כדי להדגים שהם לא חייבים להיות אותו דבר, ומדובר בשתי ישויות שונות. כשאנחנו קוראים לפונקציה אנחנו שולחים לה את מה שנמצא בתוך product_carbs, וגורמים לכך שהמשתנה carbs בתוך הפונקציה יצביע עליו. חשוב להבין את זה כרגע כדי שיהיה קל יותר להבין עקרונות מתקדמים בהמשך.
  3. אפילו מומלץ להשתמש ב־return, אבל המחברת בונה את זה באופן איטי ומגיעים לזה רק בהמשך המחברת :slight_smile:
2 לייקים
  1. אז בעיקרון רושמים את הפונקציה ראשונה בקוד בשביל להגדיר אותה קודם ואז להגדיר לה את המשתנים?
    והאם אפשר לרשום את זה הפוך(קודם אינפוט ואז שאר הקוד והפונקציות? או שפשוט ככה נהוג בשביל הסדר והמוסכמות של כתיבת קודים?
  2. למה הם ישויות שונות?
    אי אפשר היה לרשום פשוט product_carbs גם בפונקציה וגם בקריאה לפונקציה?
    או שאולי המילה carbs מופיעה בproduct_carbs אז פייטון מבינה שזה הערך?
    מה אני מפספס פה?
  3. הבנתי תודה!

ד"א
תודה רבה על כל המאמץ שלכם והזמן
זה לא מובן מאליו!

  1. כן, רושמים קודם את הפונקציה ואז קריאה אליה. יש כמה סגנונות – יש אנשים שמעדיפים לפי סדר הריצה, מלמעלה למטה, כשהכי למטה בקובץ יש את הקוד שקורא לפונקציה הראשונה למעלה שמריצה הכל. יש אנשים שמעדיפים את הפונקציות שלהם מסודרות כאשר הראשונה נמצאת למטה, וככל שעולים רואים פונקציות שנקראות בחלקים יותר מאוחרים של הקוד.
  2. אפשר היה לרשום את הערך גם פה וגם פה, אבל זה לא היה מדגים את העקרון שאפשר גם שלא. אתה מעביר את הערך שהמשתנה מצביע עליו, ולא את המשתנה עצמו :slight_smile:

אז בפשטות התשובה לזה כן?
אם התשובה לא…
או שנראה לי שהבנתיייי
carbs, fat, protein הם משתנים פנימיים של הפונקציה
ובקריאה שרושמים product_carbs, product_fat, product_protein
פייטון מבין מה אמור להיות כל אחד בגלל הסדר שהם רשומים?

כן, הסדר חשוב בהחלט. המשתנים בלי ה־product הם משתנים שקיימים אך ורק בתוך הפונקציה

לייק 1

אוו עכשיו הבנתי :wink:

סליחה על החפירה בערב חג
ושוב תודה!