User:Ninjailbreak/Python Conventions

From Wikiversity

קונבנציות פייתון[edit]

הקדמה[edit]

הקונבציות בפייתון כוללות שני סוגים של קונבנציות
1. הקונבנציות הכלליות של קוד נכון
2. הקונבציות של פייתון


קונבנציות קוד נכון[edit]

1.0. יש לחלק לבלוקים של קוד בצורה מסודרת.
1.1. יש להפריד בשתי שורות רווח בין פונקציות שונות.
1.2. יש להימנע משימוש בגלובאלים כאשר אין צורך פרקטי בדבר.
1.3. יש לרווח בין פעולות בינאריות (כלומר בעלות שני אופרנדים).
1.4. אין להשאיר מספרים שרירותיים בקוד. (לדוגמה אין לכתוב את המספר 97 באמצע הקוד כהתייחסות לערך ה-ascii של a) יש להשתמש בקבוע במקום.

קונבנציות פייתון[edit]

2.0. כל קוד פייתון יתועד בקונבנציית Sphinx
2.1. בהינתן שימוש בפייתון 3, יש צורך לבצע type annotations לפרמטרי הפונקציות ולערך החזרה.
2.2. יש לבצע שימוש בטאבים בלבד בהגשת הקוד.
2.3. סדר ה-import-ים יהיה מהקצר לארוך על פי קונבנציית PEP8.
2.4. אין לשים שורה רווח בין תיעוד המודול לשורות ה-import-ים.
2.5. במידה ואין import-ים יש לרווח בשורה אחת.
2.6. שמות משתנים ופונקציות יהיו בפורמט snake_case.
2.7. שמות מחלקות יהיו בפורמט PascalCase.
2.8. קבועים יהיו בפורמט UPPER_CASE, ויוגדרו בראש הקוד תחת ה-import-ים.
2.9. משתנה גלובאלי יתחיל בתחילית g_ על מנת לציין כי זהו משתנה גלובאלי.
2.10. בכל קוד פייתון תהיה פונקציית main שתבדוק את תפקוד המודול.
2.11. פונקציית ה-main תקרא לאחר בדיקת סטייט ההרצה של הקוד(__name__).

"""Calculator module

versions
---------
version 2 by ninjailbreak, 05.04.2020
version 1 by ninjailbreak, 04.04.2020
"""
                                                                       # <------ Space after module doc
BIAS = 0.326                                                           # <------ Constants in UPPER_CASE 

g_sum_call_times = 0                                                   # <------ Globals starts with g_.

def sum(a: int, b: int) -> int:                                        # <------ Type annotations for params and ret-val.
    """Calculate the sum of two numbers and update g_sum_call_times.
    
    :param a: The first number.
    :type a: int
    :param b: The second number.
    :type b: int
    :return: The sum of the numbers.
    :rtype: int
    """
    global g_sum_call_times
    g_sum_call_times += 1
                                                                       # <------ Space between different code blocks
    return c = a + b                                                   # <------ Spacing on operator sides
                                                                       # <------ Double space between functions
                                                                       # <------ Double space between functions
def main():
    a = int(input("Enter the first number: "))
    b = int(input("Enter the second number: "))

    print(f"The sum of the numbers is: {sum(a, b)}")

if __name__ == "__main__":                                             # <------ Check running state
    main()