נושא
לכתוב טוב
מה שהקורס מבקש מעבר לקוד שרץ. PEP 8, תיעוד, ו-main.
בעמוד הזה
שמותרווחים והזחהביטוי לוגי ארוךelif במקום קינוןפונקציותמבנה התוכניתטיפוס קבוע למשתנהבדיקה עצמיתהקוד ירוץ גם בלי רוב הכללים האלה. פייתון לא אוכפת אותם. הם קיימים בשביל מי שיקרא את הקוד, כולל אתם בעוד חודש. המסמך שמרכז אותם הוא PEP 8. היוצא מן הכלל הוא ההזחה: שם הכלל הוא חלק מהשפה.
שמות
| כלל | נכון | לא |
|---|---|---|
| אותיות קטנות | character |
Character |
| מילים מופרדות בקו תחתון | nose_length |
noselength, noseLength |
| קבוע באותיות גדולות | PI = 3.14 |
pi = 3.14 |
| שם שאומר מה יש בו | fairy_tale_file_with_extension |
file |
| פונקציה: מה היא עושה | num_of_bottles |
f, calc |
| לא אותו שם בפנים ובחוץ | land_animal, sea_animal |
animal פעמיים |
קבוע הוא הבטחה, לא נעילה. פייתון תאפשר לשנות את PI.
רווחים והזחה
| כלל | נכון | לא |
|---|---|---|
| משני צדי אופרטור | x = a + 1 |
x=a+1 |
| אחרי פסיק | f(a, b, c) |
f(a,b,c) |
| פרמטר אחד | f(a) |
f( a ) |
| הזחה של בלוק | ארבעה רווחים | טאב, או ערבוב של שניהם |
| בין פונקציות | שתי שורות ריקות | שום רווח |
ביטוי לוגי ארוך
כל תנאי בסוגריים, ורווחים סביב האופרטורים:
(((sandwiches >= 1) and (sandwiches < 4))
or (bowls_of_soup == 2))
elif במקום קינון
שלוש אפשרויות כתובות כ-if, elif, elif, else באותה רמה, ולא
if בתוך else בתוך else.
פונקציות
- מטרה אחת לכל פונקציה
- docstring מיד אחרי ה-
def: מה היא עושה,:param:,:type:,:return:,:rtype: - קלט ופלט ברורים. ערך נכנס כארגומנט ויוצא ב-
return - לא לגעת במשתנים גלובליים מתוך פונקציה, אלא אם הם קבועים. ובטח
לא לשנות אותם עם
global
def num_of_bottles(total_liters):
"""Calculates how many 1.5 liter bottles to take.
:param total_liters: the total amount of water needed
:type total_liters: float
:return: the number of bottles
:rtype: int
"""
return math.ceil(total_liters / 1.5)
מבנה התוכנית
def main():
# the program starts here
pass
if __name__ == "__main__":
main()
הקורס מבקש את המבנה הזה בכל תוכנית מיחידה 5 והלאה.
טיפוס קבוע למשתנה
משתנה שהתחיל כמספר נשאר מספר. לעבור ממנו למחרוזת זה אפשרי, וbad practice.
בדיקה עצמית
מה לא בסדר, לפי מה שהקורס מבקש?
NumberOfStudents=30MAX_SCORE = 100, כשהערך משתנה בהמשך התוכניתprint(a,b)- פונקציה בשם
do_stuffבלי docstring, שמדפיסה את התוצאה במקום להחזיר אותה - שתי פונקציות צמודות, בלי שורה ריקה ביניהן
תשובות. 1: אותיות גדולות וחסרים רווחים, צריך
number_of_students = 30. 2: אותיות גדולות שמורות לקבוע. 3: חסר רווח
אחרי הפסיק. 4: שם שלא אומר כלום, אין תיעוד, ו-print במקום return
מונע שימוש בתוצאה. 5: צריך שתי שורות ריקות.