שבוע 6 מחברת 5 תרגיל ראשון group_by

תגיות:

שלום
איך אפשר לקרוא לפנקצית ספריה באופן ישיר?
לדוגמה: אם הקוד שלי מממש את הפונקציה len אך אני רוצה לקרוא לפונקציה שמספקת המערכת.

אם אני מבין אותך יש לך כפילות בין שם הפונקציה בספריה לפונקציה ביט אין של פייטון ?
כי אם זה המצב אתה יכול לייבא את הפונקציה בשם אחר:
from X import Y as Z

זד Z יהיה השם החדש שאתה נותן לפונקציה שמגיעה מתוך המודול.

מאיזה מודול מגיע הפונקציה len בילט אין של פייטון?

אין לי מושג. אני בכלל לא בטוח שיש לה מודול מובנה כמו שאנחנו מכירים אותו.
אבל למה אתה צריך את זה בעצם ?

לייק 1

בתרגיל נתבקש חתימה של פונקציה:
group_by(len, [“hi”, “bye”, “yo”, “try”])
כלומר לתת יכולת לא סטנדרתית לפונקציה len
או במילים אחרות להעמיס את פונקציה len
אבל אם אני רוצה להשתמש בפונצית הספריה len אני מחוייב לקרוא לה מפורשות ביחד עם של המודול

אין סתירה.
אתה יכול לזמן את len כארגומנט בפונקציה או להשתמש בה כמה שתרצה.
את הפונקציה שאתה מביא מהמודול, תשנה לה את השם כמו שרשמתי לך למעלה. תקרא לה my_len או משהו.

הפונקציה הקוראת:
group_by(len, [“hi”, “bye”, “yo”, “try”]) # result: {2: [“hi”, “yo”], 3: [“bye”, “try”]}.
כפי שהתרגיל מבקש.

זו חתימת הפונקציה שלי:
def group_by(func, iter1):
print(func(iter1))

ה len מתקבל בתור פרמטר, ואני מזמן את הפונקציה עם הקריאה:
print(func(iter1))

נתתי את היכולת החדשה לפונקציה len
def len(in_iter):
פה יש את המימוש החדש לפונקציה len

אבל אני לא יכול לקרוא ל len של המערכת מתוך len המימוש העצמי.
הייתי יכול להשתמש בהצעה שלך אם הייתי יודע מה לשים בתור X לפי ההצעה שלך:
from X import Y as Z

הבנתי.

אוקי אז אתה דורס את הפונקציה ואז אתה רוצה להשתמש בפונקציה len הרגילה (בנוסף לזו שיצרת)
אני לא מבין גדול, אבל אל תעשה את זה ! :slight_smile:

אתה דורס פה פונקציית בסיס.

בכל מקרה אני מניח שעכשיו יש לך בעיה אחרת והיא להחזיר את len לשימוש הרגיל שלה.
אתה יכול לעשות את זה על ידי מחיקת הפונקציה הגלובלית:
תריץ את השורה הבאה:

del len

תשנה את הפונקציה שלך לשם אחר my len או משהו כזה שלא ידרוס את len