|
26 | 26 | "metadata": {},
|
27 | 27 | "source": [
|
28 | 28 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
29 |
| - " הנה שורה שתראה לנו קצת שונה תחבירית מכל מה שהכרנו עד עכשיו:\n", |
| 29 | + " הנה שורה שתיראה לנו קצת שונה תחבירית מכל מה שהכרנו עד עכשיו:\n", |
30 | 30 | "</p>"
|
31 | 31 | ]
|
32 | 32 | },
|
|
45 | 45 | "source": [
|
46 | 46 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
47 | 47 | " בצד ימין יש tuple שמכיל שני איברים, ואנחנו מבצעים השמה לשני משתנים ששמותיהם <var>country</var> ו־<var>population</var>.<br>\n",
|
48 |
| - " אמנם לא הייתי נותן לפיסת הקוד הזו את תואר פיסת הקוד הנאה בעולם, אבל נראה שפייתון יודע להריץ אותה:<br>\n", |
| 48 | + " אומנם לא הייתי מעניק לפיסת הקוד הזו את תואר פיסת הקוד הנאה בעולם, אבל נראה שפייתון יודעת להריץ אותה:<br>\n", |
49 | 49 | "</p>"
|
50 | 50 | ]
|
51 | 51 | },
|
|
80 | 80 | "metadata": {},
|
81 | 81 | "source": [
|
82 | 82 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
83 |
| - " התחביר שמאפשר לפייתון לפרק מבנה ולבצע השמה של האיברים שבו לכמה שמות משתנים במקביל, קיבל את השם <dfn>unpacking</dfn>.\n", |
| 83 | + " התחביר שמאפשר לפייתון לפרק מבנה ולבצע השמה של האיברים שבו לכמה שמות משתנים בו־זמנית, קיבל את השם <dfn>unpacking</dfn>.\n", |
84 | 84 | "</p>"
|
85 | 85 | ]
|
86 | 86 | },
|
|
103 | 103 | "metadata": {},
|
104 | 104 | "source": [
|
105 | 105 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
106 |
| - " מתכנתים רבים מנצלים את הנוחות שב־unpacking, מה שגורם לו להופיע בקוד שתמצאו \"בעולם האמיתי\" פעמים רבות.<br>\n", |
107 |
| - " ניתן לבצע השמה לכמה משתנים שנרצה במקביל:\n", |
| 106 | + " מתכנתים רבים מנצלים את הנוחות שב־unpacking, ולכן תמצאו שהוא מופיע פעמים רבות בקוד \"בעולם האמיתי\".<br>\n", |
| 107 | + " אפשר לבצע השמה לכמה משתנים שנרצה בו־זמנית:\n", |
108 | 108 | "</p>"
|
109 | 109 | ]
|
110 | 110 | },
|
|
195 | 195 | "metadata": {},
|
196 | 196 | "source": [
|
197 | 197 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
198 |
| - " שימוש מקובל מאוד ל־unpacking אותו כבר הספקתם לראות בעבר, מתרחש בלולאות for.<br>\n", |
199 |
| - " ניצור רשימה של tuple־ים, בה כל tuple ייצג מדינה ואת כמות האנשים החיים בה:\n", |
| 198 | + " שימוש מקובל מאוד ל־unpacking, שאותו כבר הספקתם לראות בעבר, מתרחש בלולאות for.<br>\n", |
| 199 | + " ניצור רשימה של tuple־ים, שבה כל tuple ייצג מדינה ואת מספר האנשים החיים בה:\n", |
200 | 200 | "</p>"
|
201 | 201 | ]
|
202 | 202 | },
|
|
219 | 219 | "metadata": {},
|
220 | 220 | "source": [
|
221 | 221 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
222 |
| - "בעולם ללא unpacking, היינו צריכים לכתוב את הקוד הבא:\n", |
| 222 | + "בעולם ללא unpacking, היינו צריכים לכתוב כך:\n", |
223 | 223 | "</p>"
|
224 | 224 | ]
|
225 | 225 | },
|
|
259 | 259 | "metadata": {},
|
260 | 260 | "source": [
|
261 | 261 | "<table style=\"font-size: 1.5rem; border: 0px solid black; border-spacing: 0px;\">\n",
|
262 |
| - " <caption style=\"direction: rtl; text-align: center;\">תצוגה על המשתנה <var>countries_with_population</var> ועל צורת הפירוק שלו</caption>\n", |
| 262 | + " <caption style=\"direction: rtl; text-align: center;\">תצוגה של המשתנה <var>countries_with_population</var> ושל צורת הפירוק שלו</caption>\n", |
263 | 263 | " <tr>\n",
|
264 | 264 | " <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: left; border-bottom: 1px solid;\">0</td>\n",
|
265 | 265 | " <td style=\"padding-left: 4px; padding-top: 2px; padding-bottom: 3px; font-size: 1.3rem; color: #777; text-align: left; border-left: 1px solid #555555; border-bottom: 1px solid;\">1</td>\n",
|
|
357 | 357 | "source": [
|
358 | 358 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
359 | 359 | " באיור למעלה, התאים האדומים מפורקים לתוך המשתנה <var>country</var> והתאים הירוקים לתוך המשתנה <var>population</var>.<br>\n",
|
360 |
| - " כל איטרציה של הלולאה תגרום לפירוק של צמד אחד מתוך הרשימה, והשמתם בהתאמה לתוך צמד המשתנים שבראש לולאת ה־for.\n", |
| 360 | + " כל איטרציה של הלולאה תגרום לפירוק של צמד אחד מתוך הרשימה, ולהשמתו בהתאמה לתוך צמד המשתנים שבראש לולאת ה־for.\n", |
361 | 361 | "</p>"
|
362 | 362 | ]
|
363 | 363 | },
|
|
373 | 373 | "metadata": {},
|
374 | 374 | "source": [
|
375 | 375 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
376 |
| - " הרעיון של unpacking הופך להיות שימושי מאוד כשאנחנו רוצים לעבור על המפתח והערך של מילון בו זמנית.<br>\n", |
| 376 | + " הרעיון של unpacking נעשה שימושי מאוד כשאנחנו רוצים לעבור בו־זמנית על המפתח ועל הערך של מילון.<br>\n", |
377 | 377 | " כל שנצטרך לעשות כדי לקבל את המפתח לצד הערך בכל איטרציה, זה להשתמש בפעולה <code>items</code> על המילון:\n",
|
378 | 378 | "</p>"
|
379 | 379 | ]
|
|
414 | 414 | "metadata": {},
|
415 | 415 | "source": [
|
416 | 416 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
417 |
| - " המקרה הזה לא שונה מהמקרים הקודמים שראינו, אבל חשבתי שיהיה נחמד לראות אותו במפורש.<br>\n", |
418 |
| - " הפעם נקח פונקציה שמחזירה tuple, ונשתמש ב־unpacking כדי לפרק את הערכים שהיא מחזירה למשתנים.<br>\n", |
| 417 | + " המקרה הזה לא שונה מהמקרים הקודמים שראינו, אבל חשבתי שיהיה נחמד לראות אותו מפורשות.<br>\n", |
| 418 | + " הפעם ניקח פונקציה שמחזירה tuple, ונשתמש ב־unpacking כדי לפרק את הערכים שהיא מחזירה למשתנים.<br>\n", |
419 | 419 | "</p>"
|
420 | 420 | ]
|
421 | 421 | },
|
|
503 | 503 | "source": [
|
504 | 504 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
505 | 505 | " הגדרנו פונקציה שמדפיסה לנו יפה מיקומים לפי x ו־y שהיא מקבלת.<br>\n",
|
506 |
| - " המימוש הגיוני, אבל אוי א בראך! השימוש מאוד לא נוח!<br>\n", |
507 |
| - " כל פעם אנחנו צריכים לפרק את ה־tuple שמכיל את המיקום ל־2 איברים, ולשלוח כל אחד מהם בנפרד.\n", |
| 506 | + " המימוש הגיוני, אבל אוי א בראך! השימוש לא מאוד נוח!<br>\n", |
| 507 | + " בכל פעם אנחנו צריכים לפרק את ה־tuple שמכיל את המיקום ל־2 איברים, ולשלוח כל אחד מהם בנפרד.\n", |
508 | 508 | "</p>"
|
509 | 509 | ]
|
510 | 510 | },
|
|
542 | 542 | "metadata": {},
|
543 | 543 | "source": [
|
544 | 544 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
545 |
| - " נראה מוזר? זו לא טעות, זהו באמת תחביר שמעולם לא ראינו עדיין!<br>\n", |
| 545 | + " נראה מוזר? זו לא טעות, זהו באמת תחביר שעדיין לא ראינו!<br>\n", |
546 | 546 | " הכוכבית מפרקת את ה־tuple שהגדרנו, <var>treasure_location</var>, ושולחת לארגומנט <var>x</var> את הערך הראשון ולארגומנט <var>y</var> את הערך השני.\n",
|
547 | 547 | "</p>"
|
548 | 548 | ]
|
|
640 | 640 | "metadata": {},
|
641 | 641 | "source": [
|
642 | 642 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
643 |
| - " אין מנוס, דנו אותנו לחיי עבדות של פירוק מילונים ושליחת ערכיהם לפונקציות! 😢\n", |
| 643 | + " אין מנוס, דנו אותנו לחיי עבדות של פירוק מילונים ולשליחת ערכיהם לפונקציות! 😢\n", |
644 | 644 | "</p>"
|
645 | 645 | ]
|
646 | 646 | },
|
|
671 | 671 | "metadata": {},
|
672 | 672 | "source": [
|
673 | 673 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
674 |
| - " במקרה המאוד מיוחד של מילון, ניתן לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.<br>\n", |
| 674 | + " במקרה המיוחד מאוד של מילון, אפשר לשלוח לפונקציה את הפרמטרים בעזרת unpacking עם שתי כוכביות.<br>\n", |
675 | 675 | " המפתחות של המילון צריכים לציין את שם הפרמטרים של הפונקציה, והערכים במילון יהיו הערך שיועבר לאותם פרמטרים:\n",
|
676 | 676 | "</p>"
|
677 | 677 | ]
|
|
704 | 704 | " מה קרה פה?<br>\n",
|
705 | 705 | " באיטרציה הראשונה <var>location</var> היה <code>{'x': 36.671111, 'y': 65.808056}</code>.<br>\n",
|
706 | 706 | " הפונקציה <code>print_treasure_locations</code> מחכה שיעבירו לה ערך לפרמטר <var>x</var> ולפרמטר <var>y</var>.<br>\n",
|
707 |
| - " ה־unpacking שעשינו בעזרת שתי הכוכביות העביר את הערך של המפתח <code>'x'</code> במילון לפרמטר <var>x</var>, ואת הערך שהיה תחת המפתח <code>'y'</code> במילון לפרמטר <var>y</var>.\n", |
| 707 | + " ה־unpacking שעשינו בעזרת שתי הכוכביות העביר את הערך של המפתח <code>'x'</code> במילון לפרמטר <var>x</var>, ואת הערך של המפתח <code>'y'</code> במילון לפרמטר <var>y</var>.\n", |
708 | 708 | "</p>"
|
709 | 709 | ]
|
710 | 710 | },
|
|
742 | 742 | "metadata": {},
|
743 | 743 | "source": [
|
744 | 744 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
745 |
| - " אנחנו רגילים שפייתון די מתירני, אבל על unpacking תקין הוא לא מוותר.<br>\n", |
| 745 | + " אנחנו רגילים שפייתון די סובלנית, אבל על unpacking תקין היא לא מוותרת.<br>\n", |
746 | 746 | " בדוגמה הבאה אנחנו מנסים לחלץ שני איברים לתוך שלושה משתנים, וזה לא נגמר טוב:\n",
|
747 | 747 | "</p>"
|
748 | 748 | ]
|
|
761 | 761 | "metadata": {},
|
762 | 762 | "source": [
|
763 | 763 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
764 |
| - " נקבל שגיאה דומה אך שונה כשננסה לחלץ מספר לא נכון של ארגומנטים לתוך פונקציה:\n", |
| 764 | + " נקבל שגיאה דומה, אך שונה, כשננסה לחלץ מספר לא נכון של ארגומנטים לתוך פונקציה:\n", |
765 | 765 | "</p>"
|
766 | 766 | ]
|
767 | 767 | },
|
|
814 | 814 | "</p>"
|
815 | 815 | ]
|
816 | 816 | },
|
| 817 | + { |
| 818 | + "cell_type": "markdown", |
| 819 | + "metadata": {}, |
| 820 | + "source": [ |
| 821 | + "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n", |
| 822 | + "הפונקציה בלי unpacking:\n", |
| 823 | + "</p>" |
| 824 | + ] |
| 825 | + }, |
817 | 826 | {
|
818 | 827 | "cell_type": "code",
|
819 | 828 | "execution_count": null,
|
820 | 829 | "metadata": {},
|
821 | 830 | "outputs": [],
|
822 | 831 | "source": [
|
823 | 832 | "def fibonacci_no_unpacking(number):\n",
|
824 |
| - " # הפונקציה בלי unpacking\n", |
825 | 833 | " a = 1\n",
|
826 | 834 | " b = 1\n",
|
827 | 835 | " total = 0\n",
|
|
830 | 838 | " temp = a\n",
|
831 | 839 | " a = b\n",
|
832 | 840 | " b = temp + b\n",
|
833 |
| - " return total\n", |
834 |
| - "\n", |
835 |
| - "\n", |
| 841 | + " return total" |
| 842 | + ] |
| 843 | + }, |
| 844 | + { |
| 845 | + "cell_type": "markdown", |
| 846 | + "metadata": {}, |
| 847 | + "source": [ |
| 848 | + "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n", |
| 849 | + "הפונקציה עם unpacking:\n", |
| 850 | + "</p>" |
| 851 | + ] |
| 852 | + }, |
| 853 | + { |
| 854 | + "cell_type": "code", |
| 855 | + "execution_count": null, |
| 856 | + "metadata": {}, |
| 857 | + "outputs": [], |
| 858 | + "source": [ |
836 | 859 | "def fibonacci_sum(number):\n",
|
837 |
| - " # הפונקציה עם unpacking\n", |
838 | 860 | " a, b = 1, 1\n",
|
839 | 861 | " total = 0\n",
|
840 | 862 | " while a <= number:\n",
|
|
864 | 886 | "metadata": {},
|
865 | 887 | "source": [
|
866 | 888 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
867 |
| - " לפניכם tuple המכיל מספר מילונים, כאשר כל מילון מייצג דמות חשודה ברצח.<br>\n", |
| 889 | + " לפניכם tuple המכיל כמה מילונים, כאשר כל מילון מייצג דמות חשודה ברצח.<br>\n", |
868 | 890 | " בתוך כל אחד מהמילונים, תחת המפתח <em>evidences</em>, ישנו tuple שבו שני איברים.<br>\n",
|
869 |
| - " האיבר הראשון הוא הנשק שנתפס על ידי המשטרה, והאיבר השני הוא המיקום המרכזי בו הדמות הייתה באותו יום.<br>\n", |
870 |
| - " בהנתן שהרצח בוצע על ידי אקדח דרינגר (derringer) ב־Petersen House, הדפיסו רק את שמות האנשים שעדיין חשודים ברצח.<br>\n", |
| 891 | + " האיבר הראשון הוא הנשק שתפסה המשטרה, והאיבר השני הוא המיקום המרכזי שבו הייתה הדמות באותו היום.<br>\n", |
| 892 | + " בהינתן שהרוצח השתמש באקדח דרינגר (derringer) ב־Petersen House, הדפיסו רק את שמות האנשים שעדיין חשודים ברצח.<br>\n", |
871 | 893 | " השתדלו להשתמש ב־unpacking לפחות פעמיים.\n",
|
872 | 894 | "</p>"
|
873 | 895 | ]
|
|
890 | 912 | "metadata": {},
|
891 | 913 | "source": [
|
892 | 914 | "<p style=\"text-align: right; direction: rtl; float: right; clear: both;\">\n",
|
893 |
| - " לנוחיותכם, הנה פונקציה שמקבלת כלי נשק ומיקום, ובודקת האם הראיות תואמות:\n", |
| 915 | + " לנוחיותכם, הנה פונקציה שמקבלת כלי נשק ומיקום, ובודקת אם הראיות תואמות:\n", |
894 | 916 | "</p>"
|
895 | 917 | ]
|
896 | 918 | },
|
897 | 919 | {
|
898 | 920 | "cell_type": "code",
|
899 |
| - "execution_count": 189, |
| 921 | + "execution_count": null, |
900 | 922 | "metadata": {},
|
901 | 923 | "outputs": [],
|
902 | 924 | "source": [
|
|
921 | 943 | "name": "python",
|
922 | 944 | "nbconvert_exporter": "python",
|
923 | 945 | "pygments_lexer": "ipython3",
|
924 |
| - "version": "3.7.4" |
| 946 | + "version": "3.7.6" |
925 | 947 | }
|
926 | 948 | },
|
927 | 949 | "nbformat": 4,
|
|
0 commit comments