Python היא שפת תכנות מתפרשת ברמה גבוהה שהפילוסופיה שלה מדגישה את הקריאות של הקוד שלה.
אחרי שנה של פיתוח, הגרסה החדשה של שפת התכנות Python 3.11 פורסמה, הסניף החדש ייתמך למשך שנה וחצי ולאחר מכן יווצרו טלאים עם נקודות תורפה למשך שלוש וחצי שנים נוספות.
במקביל, החלו בדיקות אלפא של ענף Python 3.12 (לפי לוח הפיתוח החדש, העבודה על סניף חדש מתחילה חמישה חודשים לפני שחרורו של הסניף הקודם ומגיעה לבדיקות אלפא עד הגרסה הבאה).
ענף Python 3.12 יהיה במהדורות אלפא למשך שבעה חודשים, במהלכם יתווספו תכונות חדשות ויתוקנו באגים. לאחר מכן יתקיימו בדיקות בטא למשך שלושה חודשים, במהלכם תיאסר הוספת פיצ'רים חדשים ותינתן תשומת לב מלאה לתיקוני באגים. החודשיים האחרונים לפני ההשקה, הסניף יהיה בשלב מועמד להשקה, אז יתבצע התייצבות סופית.
תכונות חדשות עיקריות של Python 3.11
בגרסה החדשה הזו נעשתה עבודה משמעותית כדי לייעל את הביצועים, שכן הסניף החדש כולל שינויים נלווים עם האצה ופריסה מוטבעת של קריאות פונקציה, שימוש במתורגמנים מהירים של פעולות טיפוסיות, כמו גם אופטימיזציות שהוכנו על ידי הפרויקטים Cinder ו-HotPy. בהתאם לסוג העומס, מהירות ביצוע הקוד עולה בין 10% ל-60%. בממוצע, הביצועים בעת מעבר חבילת בדיקות pyperformance עלו ב-25%.
מנגנון המטמון עוצב מחדש של bytecode, שהפחית את זמן ההפעלה של המתורגמן ב-10-15%. אובייקטים עם קוד וקוד בתים מוקצים כעת באופן סטטי על ידי המתורגמן, מה שאיפשר לבטל את השלבים של פירוק bytecode שנלקח מהמטמון והמרת אובייקטים עם קוד כדי למקם אותם בזיכרון הערימה.
נוסף תמיכה בקבוצות חריגות, מה שנותן לתוכנית את היכולת להעלות ולעבד מספר חריגים שונים בו-זמנית. סוגי חריגים חדשים ExceptionGroup ו- BaseExceptionGroup מוצעים לקבץ חריגים מרובים יחד, והביטוי "except*" מתווסף כדי להפריד חריגים מקבוצה.
נוסף סוג LiteralString מיוחד כה לבד יכול לכלול מחרוזות מילוליות התואמות לסוג LiteralString (כלומר, מחרוזות חשופות ומחרוזות מסוג LiteralString, אך לא מחרוזות שרירותיות או מעורבות מסוג str). ניתן להשתמש בסוג LiteralString כדי להגביל את העברת ארגומנטים של מחרוזת לפונקציות, החלפה שרירותית של חלקי מחרוזות שבהן זה יכול להוביל לפגיעויות, למשל, בעת יצירת מחרוזות עבור שאילתות SQL או פקודות מעטפת.
בנוסף לזה, גם ניתנת היכולת לסמן אלמנטים בודדים של מילונים (TypedDict) עם דגלי Required ו-Non Required כדי לקבוע שדות נדרשים ואופציונליים (כברירת מחדל, כל השדות המוצהרים נדרשים אם הפרמטר הכולל אינו מוגדר ל- מְזוּיָף).
נוספה @dataclass_transform class, method and function decorator, כאשר מצוין, בודק הסוג הסטטי מתייחס לאובייקט כאילו הוא משתמש ב[email protected] decorator.
מבין שאר השינויים הבולטים בגרסה חדשה זו:
- נוספה את היכולת להשתמש בקיבוץ אטומי ((?>...)) ובכמתים קנאיים (בעלים) (*+, ++, ?+, {m,n}+) בביטויים רגולריים.
- נוסף הסוג TypeVarTuple, המאפשר שימוש בגנריות משתנות, בניגוד ל-TypeVar, שמכסה לא סוג אחד, אלא מספר שרירותי של סוגים.
- הספרייה הסטנדרטית כוללת את מודול tomllib עם פונקציות לניתוח פורמט TOML.
- השיטה add_note() נוספה למחלקה BaseException, המאפשרת לצרף הערת טקסט לחריגה, למשל להוסיף מידע הקשרי שלא היה זמין בזמן זריקת החריגה.
- סוג מיוחד של עצמי נוסף כדי לייצג את הכיתה הפרטית הנוכחית. ניתן להשתמש ב-self כדי להוסיף הערות לשיטות המחזירות מופע של הכיתה שלך בצורה פשוטה יותר מאשר שימוש ב-TypeVar.
- נוספה אפשרות שורת הפקודה "-P" ומשתנה הסביבה PYTHONSAFEPATH כדי להשבית את החיבור האוטומטי של נתיבי קבצים שעלולים להיות לא בטוחים ל-sys.path.
- כלי השירות py.exe עבור פלטפורמת Windows שופר משמעותית כדי לתמוך בתחביר "-V:". / " בנוסף ל "- . ».
- פקודות מאקרו רבות של C API הומרו לפונקציות מוטבעות רגילות או סטטיות
- המודולים uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev ו-sunau הוצאו משימוש והם יוסרו מ-Python. שחרור 3.13.
- הוסרו פונקציות PyUnicode_Encode*.
- מחלקת ה-TaskGroup נוספה למודול asyncio עם הטמעת מנהל הקשר אסינכרוני שמחכה לסיום קבוצת המשימות.
- הוספת משימות לקבוצה מתבצעת באמצעות שיטת create_task() .
בסופו של דבר אם אתה מעוניין לדעת יותר על כך, אתה יכול לבדוק את הפרטים ב הקישור הבא.