2 min. read

שגיאות ברורות

פייתון יציג לנו שגיאות ברורות יותר ככה שנדע מה לתקן,
למשל חסר נקודותיים:

1
2
3
a = 2
if a > 4
print(a)

python 3.9:

1
2
3
4
5
PS code> py a.py
File "code\a.py", line 3
if a > 4
^
SyntaxError: invalid syntax

python 3.10:

1
2
3
4
5
PS code> py a.py
File code\a.py", line 3
if a > 4
^
SyntaxError: expected ':'

דוגמא נוספת - אם שכחנו את השווה השני במשפט בדיקה:

1
2
3
4
5
if amountOfMilk = 2:
File "<stdin>", line 1
if amountOfMilk = 2:
^
SyntaxError: cannot assign to attribute here. Maybe you meant '==' instead of '='?

Switch-case

זוהי תוספת גדולה לפייתון!
עד כה יכולנו לבדוק בעזרת if-elif-else:

1
2
3
4
5
6
7
8
messageType = Message.Type()

if messageType == "secret":
...
elif messageType == "private":
...
elif messageType == "broadcast":
...

במקום זה ניתן לכתוב עכשיו בעזרת match ו-case.

  • כדי לבדוק כמה באותו התנאי ניתן להשתמש ב-|.
  • כדי להשתמש בברית מחדל משתמשים ב-Discard _.

דוגמא:

1
2
3
4
5
6
7
8
9
10
11
12
messageType = Message.Type()

match messageType:
case "secret" | 'admin':
...
case "private":
...
case "broadcast":
...
case 'error'
case _:
... # default

ניתן להשתמש בזה גם בעזרת מחלקות:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from dataclasses import dataclass

@dataclass
class Point:
X: int
Y: int

point = Point(1, 1)

match point:
case Point(1, 1):
print("THANKS")
case _:
print("NOT FOUND")

הגדרת רמז לשני סוגי משתנה או יותר

הפיצ’ר הזה דומה מאוד לפיצ’ר בשפה TypeScript.
אחד האופציות בשפות דינאמיות שפונקציות ייקבלו סוג משתנה אחד או יותר,
למשל זה נפוץ לומר שאנחנו רוצים גם מספרים שלמים וגם מספרים עשרוניים, אז בTypeScript ניתן לעשות כך:

1
2
3
function Do(myNumber: number | float){
console.log(myNumber)
}

פייתון הוסיפו את זה גם כן במקום להשתמש ב-Union.
לפני:

1
2
def square(number: Union[int, float]) -> Union[int, float]:
return number ** 2

אחרי:

1
2
def square(number: int | float) -> int | float:
return number ** 2

הגדרת TypeAlias

ניתן להצהיר על סוגי משתנים לפני שימושם, כעת ניתן להגדיר זאת בצורה מפורשת.
לפני:

1
MyType = 'ClassName' 

אחרי:

1
MyType: TypeAlias = 'ClassName' 

רשימת השינויים הקטנים יותר גדולה ולכן לא אכתוב את כולם.
ניתן לצפות בהם כאן

אחד השינויים הגדולים יותר זה ה-switch-case.
למרות שלפייתון יש הרבה עבודה כדי לסדר את ה-APIים שלה ולהביא אותה לשפה מודרנית לחלוטין,
היא מוכיחה את עצמה עם החידושים שהיא מכניסה ואני בטוח שהיא תישאר ל-20 שנה הקרובות לפחות!

פייתון 3.11 תצא בעתיד הקרוב ויש כבר גרסאות development שעובדות,
ניתן להתנסות כאן

תודה על הקריאה!


אהבתם? מוזמנים להביע תמיכה כאן: כוס קפה