שאלה על מתודות של מחרוזות

היי,
במתודות של רשימות - שמתי לב שיש מתודות שנדרשים לשמור אותם במשתנה כמו split על מנת שנוכל להדפיס ולראות אותם, ויש מתודות כמו pop() append() שלא נדרש לשמור אותם במשתנה.
אפשר לעשות סדר אילו מתודות נדרש לשמור במשתנים ואלו לא?

במחברת 3.5 יש מעט הסברים שמסייעים להבין. באופן כללי מחרוזת היא בלתי ניתנת לשינוי (immutable), ולכן צריך לשמור במשתנה את המחרוזת אותה מחזירה המתודה - כי המחרוזת עליה הפעלנו את המתודה לא משתנה.
לעומת זאת, רשימה היא ניתנת לשינוי (mutable), ולכן רוב (אולי כל, לא מתחייבת) המתודות הפועלות עליה משנות את הרשימה המקורית ואינן מחזירות ערך - ולכן אין צורך לשמור את השינוי (ושמירה לא תסייע כי הערך המוחזר יהיה None).
באופן כללי כשמדובר במחרוזת יהיה צריך תמיד לשמור - אי אפשר לשנות את המחרוזת המקורית. כשמדובר ברשימה כנראה שאין צורך לשמור, אבל תמיד טוב להריץ דוגמא קטנה ליד ולבדוק את העניין :slight_smile:

לייק 1

תודה אבל התכוונתי לרשימות***

מבדיקה מהירה נראה שכל המתודות של רשימה שאינן מתחילות ב-__ לא מחזירות ערך אלא משנות את הרשימה המקורית, למעט copy שיוצרת העתק של הרשימה ומחזירה אותו.
זה לא כולל את המתודות שעונות על שאלה - כמו index ו-count שלא משנות את הרשימה אך גם לא מחזירות רשימה חדשה אלא את התשובה לשאלה שלך. ספציפית pop מעט יוצאת דופן - היא גם משנה את הרשימה וגם מחזירה את האיבר שהיא הוציאה מהרשימה.

3 לייקים

מה הכוונה למתודות שמתחילות ב:____?

אלה מתודות קסם שלפי הסילבוס נלמד עליהן (לפחות על חלקן) כשנגיע למחלקות :slight_smile: :mage: :woman_mage:

2 לייקים

היי ים,
אודה שאחד המדריכים יתייחס. העניין לא ברור לי
@Yam

הגברת פישל־שלג היטיבה להסביר.

במחברת 3.5 ישנם הסברים על ההבדלים שבין Mutable לבין Immutable. אם נסתכל על טיפוסים המסווגים כ־Mutable (כמו List):

  1. פעולות על משתנים מהסוגים הללו ינטו להשפיע ישירות על המשתנה עליו אנחנו מפעילים אותן.
  2. דוגמאות טובות לכך עבור רשימה הן pop או append, כפי שציינת, וגם אחרות כמו sort או remove.
  3. לפעמים ישנן פעולות של רשימה שלא עובדות כך, כמו index או count. הסיבה לכך היא שאין שום היגיון שברגע שאני מבקש למצוא איבר מסוים ברשימה, הרשימה תשתנה.
  4. מכאן שאין חובה שפעולות על משתנה שהוא Mutable ישנו את הערך במקום, אבל זה כן דבר נפוץ ופחות או יותר ברירת־המחדל.

אם נסתכל על טיפוסים המסווגים כ־Immutable (כמו מחרוזות), נבין שאי אפשר לשנות אותם במקום, ולכן מלכתחילה הם לא יכילו פעולות שמשתנות את המשתנה ותמיד יחזירו ערך.

מקווה שזה הבהיר את העניין.

4 לייקים