top of page
מודולים – ספריות תוכניות מדף מן המוכן
מודולים – ספריות תוכניות מדף מן המוכן בואו נחבר כמה עובדות יחד, ונראה מה המסקנה, המתקבלת מהן. פייתון היא תוכנה בקוד פתוח, חינמית, כולם יכולים להשתמש, כולם יכולים לכתוב עבורה ספריות (מודולים), והיא אף מגיעה כבר עם ההתקנה, כסטנדרט, עם רשימה מכובדת של מודולים שימושיים. מודולים דומים למחלקות שנכתבו מראש, וניתן לייבא אותם לתוכנית שלנו ולעשות בהן שימוש, בלי לכתוב יותר מידי קוד. זו עוצמה אדירה שיש לפייתון כקוד פתוח שכולם יכולים לכתוב עבורו ספריות שכאלה בתחומים מתחומים שונים. נגיד של
איטראטור - iterator
איטראטור - iterator כדי להבין מהו איטרטור אנו צריכים להבין איזה מין אובייקט הוא iterable – טוב בפייתון יש הרבה אובייקטים המוגדרים iterables , ביניהם רשימות, טופלים, מילונים, סטים ומחרוזות המשמעות של המילה היא שניתן לעבור דרך אותו אובייקט, על כל איבריו, אחד אחד, לפי הסדר, ולעשות עם כל איבר של האובייקט משהוא בנפרד. לפעמים באמצעות הפקודה for - for i in "abcd": print(i) >>> a b c d המחרוזת "abcd" מאפשר ריצה בתוכה על כל אחד מהאיברים שלה והדפסתו למשל. האובייקטים הללו יכולים לקב
גנרטור generator
גנרטור generator גנרטור הוא סוג מסוים של איטרטור – מאפשר יצירה מהירה ונוחה של איטרטורים - (אבל לא כל איטרטור הוא גנרטור) – הדבר נעשה באמצעות הביטוי ,yield המניב בכל פעם איבר נוסף בסדרה ועושה זאת לפי דרישה בלבד (וזוכר רק את האיבר האחרון שהוא הניב ולא שומר את כל הסדרה) – הגנרטור שנראה בדוגמא הבאה יודע, לפני שהוא מנוצל ונשרף (consumed), לייצר לנו למשל את ריבועי המספרים, מנקודת התחלה שנבחר ועד לנקודת סיום שנבחר (לא כולל את נקודת הסיום). למטה אנו בונים את הפונקציה squarit שמחזירה


טיפול בשגיאות – exeptions
טיפול בשגיאות – exeptions עבודה עם תוכנה ללא טיפול בשגיאות משולה לניווט בסהרה, בלי מצפן, בלי מפה, בלי טלפון חכם, בלי מים, בלי אוכל, בלי רכב, נראה לי שהנקודה הובנה כבר במפה. בחיים זה נראה טריוויאלי אבל מה תוכנה צריכה לעשות כאשר אומרים לה לחסר 8 מתפוח, בואו ננסה את זה - a="apple" b=8 print(a-b) >>> TypeError: unsupported operand type(s) for -: 'str' and 'int' פייתון שולחת לנו הודעת שגיאה מסוג TypeError (ויש עוד סוגים רבים) וגם הסבר שהאופרטור, במקרה שלנו פעולת החיסור, אינה ת
פרויקט- אבני דומינו
פרויקט- אבני דומינו הגיע הזמן לעשות חזרה, במסגרת מיני פרויקט, המיישם חלק גדול מהחומר שנלמד כאן. וגם להבין את השלבים של התהליך המחשבתי בזמן בניית תוכנית מורכבת. כבר אמרנו שתוכנית היא מודל של המציאות ובפרויקט הזה אנו רוצים לערוך מעין מודל ראשוני של משחק הדומינו הידוע. משחק הדומינו כולל 28 אבנים, לכל אבן שני צדדים, לכל צד יש שבע אפשרויות – הוא יכול להיות חלק או בעל 1-6 נקודות. הדבר הראשון שנרצה לעשות הוא לייצר מודל של אבני דומינו. אנו יודעים שכל אבן כוללת שני מספרים, שכל אחד מהם
חלק שלישי – מתקדמים יותר
חלק שלישי – מתקדמים יותר - הקדמה טוב, מי שמסתובב, עדיין, באזור הזה, באמת התאהב בפייתון. אולי הפך לאיש מקצוע. זה אומר הרבה תרגול, ובנייה של פרויקטים קטנים, אחרת אי אפשר באמת להבין את החומר. מכאן, ממראים. מי שמתקשה בהבנה, מוזמן לשאול שאלות בפורום, ננסה לעזור ולקדם את ההבנה שלו ברבדים העמוקים שהתוכנה יודעת להגיע אליהם. ולא, לא היה לי שם יותר מקורי מאשר "מתקדמים יותר" אדי ארבילי
מחלקה ראשונה – עוד מתודות מיוחדות
מחלקה ראשונה – עוד מתודות מיוחדות __setitem__ ו- __getitem__ מחלקות הן דרך מעולה ליצור מודלים של פיסות מציאות קטנטנות, באמצעותן אנו יוצרים אובייקטים בעלי תכונות ויכולות כאילו היו..אובייקטים במציאות. כשאנו יוצרים אובייקט של רשימה בפייתון, נניח באופן הבא [x=[1,2, פייתון מפנקת אותנו בשלל אפשרויות שמובנות בתוכנה, למשל אנו יכולים לבצע (x.append(3 ולקבל רשימה מעודכנת [1,2,3]. כשאנו בונים אובייקט משל עצמנו, מחלקה פרטית, אנו צריכים לאפשר את כל הפעולות הללו באופן ידני. אם האובייקט של
טיפול ב-attributes
טיפול ב-attributes __getattr__, __setattr__ , __delattr__ לאובייקט שאנו מייצרים במחלקה ישנן attribuetes או אם תרצו, תכונות. לעיתים נרצה לטפל בתכונות הללו או ליתר דיוק באפשרות לעשות בהן שימוש או למחוק אותן מהאובייקט. class MyAttributes: def __init__(self): self.data = {'a': 'alfa', 'b': 'beta'} def __getattr__(self, attr): return self.data[attr] obj = MyAttributes() d=obj.a print(d) >>> alfa בדוגמא למעלה, אנו מעבירים במסגרת המתודה המיוחדת __init__ שורה של תכונ
Hashable objects -אובייקטים ניתנים לגיבוב
Hashable objects -אובייקטים ניתנים לגיבוב נתחיל ראשית בהבנת המושג hash table שהיא בעברית טבלת גיבוב או טבלת ערבול, שהיא מבנה נתונים מילוני שנותן ערך לפי מפתח. זה נעשה באמצעות פונקציית גיבוב שלוקחת את המפתח והופכת אותו למספר המהווה אינדקס במערך נתונים, וככה שולפים את הערך המתאים לאותו מפתח, רק כאשר צריך אותו בלי לשמור בזיכרון כתובות רבות לכל מפתח. משהוא כזה. פונקציית הגיבוב מתאימה את המספר 3 למפתח "a" אח"כ לפי האינדקס אנו יודעים ש- 3 מקבל את הערך "alfa" . כמובן שהיא צריכה להיו


בסיסי מספרים
בסיסי מספרים איך אפשר ללמוד משהוא על מחשבים בלי להבין משהוא על בסיסי מספרים ועל איך שמחשבים עובדים באופן כללי. מה גם שאפשר לעשות עם הידע הזה הרבה דברים חשובים בפייתון. השיטה הפופולרית הנהוגה בקרב בני האנוש היא השיטה העשרונית, ואני קניתי את ההסבר שהדבר נובע מכך שלבני האדם יש עשר אצבעות ששימשו בתחילה לצורך אריתמטיקה פשוטה. במקום לחשוב על צורות שונות ומשונות למספר 1, 10 ו- 100 פשוט מוסיפים אפס ומזיזים את המקום של הספרה 1 כך שהמיקום שלה קובע אם המספר הוא גדול או קטן. השיטה הבינאר
ניהול קבצים
ניהול קבצים פייתון מאפשרת לנו לפתוח קבצים קיימים או חדשים מסוגים שונים, לכתוב לתוכם טקסט או תוכן אחר או לקרוא ולעבד אותו בצורות שונות....
f-strings – עיצוב מחרוזות מודרני
f-strings – עיצוב מחרוזות מודרני בשיעור על פורמט (format) למדנו איך לשלב משתנים בתוך מחרוזות באמצעות סוגריים מסולסלים ומתודת format. החל מגרסה 3.6 של פייתון, יש דרך הרבה יותר נוחה, קריאה ומהירה לעשות את זה – f-strings. מספיק לשים את האות f לפני הגרשיים של המחרוזת, ולהכניס ביטויים ישירות בתוך הסוגריים המסולסלים. בואו נשווה את הדרך הישנה לדרך החדשה – name = "Eddie" age = 40 # הדרך הישנה עם format print("שמי {} ואני בן {}".format(name, age)) # הדרך החדשה עם f-string print(f"ש
enumerate ו-zip – כלים שימושיים ללולאות
enumerate ו-zip – כלים שימושיים ללולאות כשעובדים עם לולאות בפייתון, יש שתי פונקציות מובנות שחוסכות המון קוד ועושות את החיים קלים יותר – enumerate ו-zip. אחרי שמכירים אותן, אי אפשר בלעדיהן. enumerate – מספור אוטומטי בלולאות נניח שיש לנו רשימה של פירות ואנחנו רוצים להדפיס כל פרי עם המספר שלו. בלי enumerate היינו צריכים לעשות משהו כזה – fruits = ["תפוח", "בננה", "תפוז", "אבטיח"] i = 0 for fruit in fruits: print(f"{i}: {fruit}") i += 1 >>> 0: תפוח 1: בננה 2: תפוז 3: אבטיח
match-case – התאמת דפוסים
match-case – התאמת דפוסים בגרסה 3.10 של פייתון נוספה פקודה חדשה ומאוד שימושית – match-case. מי שמכיר שפות תכנות אחרות אולי מזהה את הרעיון מפקודת switch שקיימת ב-C או ב-JavaScript, אבל ה-match של פייתון חזק הרבה יותר כי הוא יודע להתאים דפוסים (patterns) ולא רק ערכים פשוטים. נתחיל מהדוגמה הבסיסית ביותר – התאמה לפי ערך – def check_status(code): match code: case 200: return "הכל תקין" case 404: return "לא נמצא" case 500: return "שגיאת שרת" case _: return "קוד לא מוכר" .
with – מנהל הקשר (context manager)
with – מנהל הקשר (context manager) בשיעור על ניהול קבצים למדנו איך לפתוח קבצים עם open ולסגור אותם עם close. הבעיה היא שאם קורית שגיאה באמצע, הקובץ עלול להישאר פתוח ולגרום לבעיות. הפתרון האלגנטי של פייתון לזה הוא פקודת with. בואו נראה קודם את הדרך הישנה ואז את הדרך עם with – # הדרך הישנה f = open("myfile.txt", "w") f.write("שלום עולם") f.close() # הדרך עם with with open("myfile.txt", "w") as f: f.write("שלום עולם") בגרסה עם with, הקובץ נסגר אוטומטית ברגע שיוצאים מהבלו
bottom of page