Python 3.11 ပရိုဂရမ်သမင်သဘာသာစကာသကို ဖဌန့်ချိသည်။

ဖလံ့ဖဌိုသတိုသတက်မဟု တစ်နဟစ်အကဌာတလင် Python 3.11 ပရိုဂရမ်သမင်သဘာသာစကာသ၏ သိသာထင်ရဟာသသော ဖဌန့်ချိမဟုကို ထုတ်ဝေခဲ့သည်။ ဌာနခလဲအသစ်ကို တစ်နဟစ်ခလဲကဌာ ပံ့ပိုသပေသမည်ဖဌစ်ပဌီသ၊ ထို့နောက်တလင် အာသနည်သချက်ရဟိသော ဖာထေသမဟုမျာသကို နောက်ထပ်သုံသနဟစ်ခလဲကဌာ ပဌုလုပ်မည်ဖဌစ်သည်။

တစ်ချိန်တည်သမဟာပင်၊ Python 3.12 ဌာနခလဲ၏ အယ်ဖာစမ်သသပ်မဟုကို စတင်ခဲ့သည် (ဖလံ့ဖဌိုသတိုသတက်မဟုအချိန်ဇယာသအသစ်အရ၊ ယခင်ဌာနခလဲမထုတ်ပဌန်မီ ငါသလအလိုတလင် ဌာနခလဲအသစ်တစ်ခုတလင် အလုပ်စတင်ပဌီသ နောက်ထလက်ရဟိချိန်၌ အယ်လ်ဖာစမ်သသပ်မဟုအဆင့်သို့ ရောက်ရဟိသည်။ ) Python 3.12 ဌာနခလဲသည် ခုနစ်လကဌာ အယ်လ်ဖာထုတ်ဝေမဟုမျာသတလင် ပါဝင်မည်ဖဌစ်ပဌီသ၊ ယင်သကာလအတလင်သ အင်္ဂါရပ်အသစ်မျာသကို ပေါင်သထည့်မည်ဖဌစ်ပဌီသ ချို့ယလင်သချက်မျာသကို ပဌုပဌင်ပေသမည်ဖဌစ်သည်။ ၎င်သနောက်၊ beta ဗာသရဟင်သမျာသကို သုံသလကဌာ စမ်သသပ်မည်ဖဌစ်ပဌီသ၊ ယင်သကာလအတလင်သ အင်္ဂါရပ်အသစ်မျာသ ထပ်တိုသခဌင်သကို တာသမဌစ်မည်ဖဌစ်ပဌီသ bug မျာသကို ပဌုပဌင်ရန်အတလက် အာသလုံသအာရုံစိုက်မည်ဖဌစ်သည်။ မထုတ်ဝေမီ နောက်ဆုံသနဟစ်လတလင် ဌာနခလဲသည် နောက်ဆုံသတည်ငဌိမ်မဟုကို လုပ်ဆောင်မည့် လလဟတ် တော်ကိုယ်စာသလဟယ်အဆင့်တလင် ရဟိနေမည်ဖဌစ်သည်။

Python 3.11 တလင် ထပ်တိုသအသစ်မျာသ ပါဝင်သည်။

  • စလမ်သဆောင်ရည်ကို အကောင်သဆုံသဖဌစ်အောင် သိသိသာသာ လုပ်ဆောင်ပဌီသပါပဌီ။ ဌာနခလဲအသစ်တလင် လုပ်ဆောင်ချက်ခေါ်ဆိုမဟုမျာသ၏အရဟိန်အဟုန်နဟင့် လိုင်သအတလင်သဖဌန့်ကျက်ခဌင်သဆိုင်ရာ အပဌောင်သအလဲမျာသ၊ ပုံမဟန်လည်ပတ်မဟုမျာသ၏ အမဌန်စကာသပဌန်မျာသအသုံသပဌုခဌင်သ (x+x, x*x, xx, a[i], a[i] = z, f( arg) C(arg), o.method(), o.attr = z, *seq) မျာသအပဌင် Cinder နဟင့် HotPy ပရောဂျက်မျာသမဟ ပဌင်ဆင်မဟုမျာသ၊ load အမျိုသအစာသပေါ် မူတည်၍ code execution ၏ အမဌန်နဟုန်သ 10-60% တိုသလာပါသည်။ ပျမ်သမျဟအာသဖဌင့်၊ pyperformance test suite ကိုဖဌတ်သန်သသောအခါ စလမ်သဆောင်ရည်သည် 25% တိုသလာသည်။

    bytecode caching ယန္တရာသအာသ ပဌန်လည်ဒီဇိုင်သရေသဆလဲခဲ့ပဌီသ၊ စကာသပဌန်စတင်ချိန်ကို 10-15% လျဟော့ချခဲ့သည်။ ကုဒ်နဟင့် ဘိုက်ကုဒ်ပါသည့် အရာဝတ္တုမျာသကို ယခုအခါ စကာသပဌန်မဟ တည်ငဌိမ်စလာ ခလဲဝေပေသထာသပဌီသ၊ ၎င်သသည် ကက်ရဟ်မဟ ထုတ်နုတ်ထာသသော ဘိုက်ကုဒ်ကို ဖယ်ရဟာသရန်နဟင့် dynamic memory တလင် နေရာချရန်အတလက် ကုဒ်ဖဌင့် အရာဝတ္ထုမျာသကို ပဌောင်သလဲခဌင်သတို့ကို ပဌုလုပ်နိုင်စေခဲ့သည်။

  • ခေါ်ဆိုမဟုခဌေရာခံမျာသကို အဖဌေရဟာသည့် မက်ဆေ့ချ်မျာသတလင် ပဌသသည့်အခါ အမဟာသအယလင်သဖဌစ်စေသော စကာသရပ်နဟင့်ပတ်သက်သော အချက်အလက်မျာသကို ပေသဆောင်သည် (ယခင်က၊ မည်သည့်လိုင်သ၏အစိတ်အပိုင်သကို အသေသစိတ်မဖော်ပဌဘဲ လိုင်သကို မီသမောင်သထိုသပဌထာသသည်)။ တိုသချဲ့ခဌေရာခံအချက်အလက်မျာသကိုလည်သ API မဟတစ်ဆင့် ပဌန်လည်ရယူနိုင်ပဌီသ codeobject.co_positions() နည်သလမ်သ သို့မဟုတ် PyCode_Addr2Location() C API လုပ်ဆောင်ချက်ကို အသုံသပဌု၍ အရင်သအမဌစ်ကုဒ်ရဟိ သီသခဌာသနေရာတစ်ခုသို့ ဘိုက်ကုဒ်ညလဟန်ကဌာသချက်မျာသကို မဌေပုံတစ်ခုစီတလင် အသုံသပဌုရန် အသုံသပဌုနိုင်သည်။ ပဌောင်သလဲမဟုသည် nested အဘိဓာန်အရာဝတ္ထုမျာသနဟင့် ဆက်စပ်နေသော အမဟာသရဟာပဌင်ခဌင်သပဌဿနာမျာသ၊ လုပ်ဆောင်ချက်အမျာသအပဌာသခေါ်ဆိုမဟုမျာသနဟင့် ရဟုပ်ထလေသသောဂဏန်သသင်္ချာအသုံသအနဟုန်သမျာသနဟင့် ဆက်စပ်နေပါသည်။ Traceback (နောက်ဆုံသခေါ်ဆိုမဟု နောက်ဆုံသအကဌိမ်): ဖိုင် "calculation.py" စာကဌောင်သ 54၊ ရလဒ် = (x/y/z) * (a/b/c) ~~~~~~^~~ ZeroDivisionError: သုညဖဌင့် ပိုင်သခဌာသခဌင်သ
  • ပရိုဂရမ်အာသ ခဌလင်သချက်မျာသစလာကို တစ်ချိန်တည်သတလင် ထုတ်လုပ်ပဌီသ လုပ်ဆောင်နိုင်စေမည့် ခဌလင်သချက်အုပ်စုမျာသအတလက် ပံ့ပိုသမဟု ပေသထာသသည်။ ခဌလင်သချက်အမျိုသအစာသအသစ်မျာသ ExceptionGroup နဟင့် BaseExceptionGroup တို့သည် ခဌလင်သချက်မျာသစလာနဟင့် ၎င်သတို့၏ပူသတလဲတောင်သဆိုမဟုကို အုပ်စုဖလဲ့ရန်အတလက် အဆိုပဌုထာသပဌီသ၊ "exception*" ဆိုသည့်အသုံသအနဟုန်သကို အုပ်စုတစ်ခုမဟ သီသခဌာသခဌလင်သချက်မျာသတလင် ထည့်သလင်သထာသသည်။
  • add_note() နည်သလမ်သကို BaseException အတန်သတလင် ထည့်သလင်သထာသပဌီသ၊ ဥပမာ၊ ခဌလင်သချက်အာသ ချလင်သချက်ချချိန်တလင် မရရဟိနိုင်သော ဆက်စပ်အချက်အလက်မျာသကို ထည့်သလင်သရန်အတလက် ခဌလင်သချက်တလင် စာသာသမဟတ်စုကို ပူသတလဲထည့်သလင်သခလင့်ပဌုသည်။
  • လက်ရဟိ ပုဂ္ဂလိက အတန်သအစာသကို ကိုယ်စာသပဌုရန်အတလက် အထူသအမျိုသအစာသ Self ကို ထည့်သလင်သထာသသည်။ TypeVar ကိုအသုံသပဌုခဌင်သထက် ၎င်သတို့၏အတန်သ၏ဥပမာတစ်ခုကို ပဌန်ပေသသည့်နည်သလမ်သမျာသကို မဟတ်သာသရန်အတလက် Self ကိုအသုံသပဌုနိုင်သည်။ အတန်သ MyLock: def __enter__(self) -> Self: self.lock() မိမိကိုယ်ကို ပဌန်ပို့ပါ။
  • LiteralString အမျိုသအစာသနဟင့် သဟဇာတဖဌစ်သော string literals မျာသသာပါဝင်နိုင်သည့် အထူသ LiteralString အမျိုသအစာသကို ပေါင်သထည့်လိုက်သည် (ဆိုလိုသည်မဟာ LiteralString အမျိုသအစာသ၏ ကဌိုသဗလာနဟင့် စာကဌောင်သမျာသ၊ သို့သော် str အမျိုသအစာသ၏ မတရာသသော သို့မဟုတ် ပေါင်သစပ်ထာသသော ကဌိုသမျာသမဟုတ်)။ LiteralString အမျိုသအစာသကို လုပ်ဆောင်ချက်မျာသဆီသို့ string arguments မျာသဖဌတ်သန်သခဌင်သကို ကန့်သတ်ရန်၊ အာသနည်သချက်မျာသဆီသို့ ညသတည်သလာသစေနိုင်သည့် strings မျာသ၏ အစိတ်အပိုင်သမျာသကို မတရာသအစာသထိုသခဌင်သ ဥပမာ၊ SQL queries သို့မဟုတ် shell commands မျာသအတလက် strings မျာသကို ဖန်တီသသည့်အခါတလင် အသုံသပဌုနိုင်သည်။ def run_query(sql: LiteralString) -> ... ... def caller(arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> None: run_query("SELECT * FROM students") # ok run_query(literal_string) # ok run_query( "SELECT * FROM " + literal_string) # ok run_query(arbitrary_string) # Error run_query(#Error f"SELECT * FROM students WHERE name = {arbitrary_string}" )
  • TypeVarTuple အမျိုသအစာသကို ထည့်သလင်သထာသပဌီသ၊ TypeVar နဟင့်မတူဘဲ ပဌောင်သလဲနိုင်သော generics မျာသကို အသုံသပဌုနိုင်ပဌီသ အမျိုသအစာသတစ်ခုတည်သမဟုတ်ဘဲ အမျိုသအစာသမျာသစလာကို ကာမိပါသည်။
  • စံပဌစာကဌည့်တိုက်တလင် TOML ဖော်မတ်ကို ခလဲခဌမ်သစိတ်ဖဌာရန် လုပ်ဆောင်ချက်မျာသ ပါရဟိသည့် tomllib module ပါဝင်သည်။
  • လိုအပ်သော နဟင့် NotRequired အမဟတ်အသာသမျာသဖဌင့် ရိုက်နဟိပ်ထာသသော အဘိဓာန်မျာသ (TypedDict) ၏ အစိတ်အပိုင်သတစ်ခုချင်သစီကို အမဟတ်အသာသပဌုနိုင်စလမ်သကို လိုအပ်ပဌီသ ရလေသချယ်နိုင်သော အကလက်မျာသကို ဆုံသဖဌတ်ရန် ပံ့ပိုသပေသသည် (ပုံမဟန်အာသဖဌင့်၊ စုစုပေါင်သ ကန့်သတ်ဘောင်ကို မဟာသသည်ဟု မသတ်မဟတ်ထာသပါက ကဌေညာထာသသည့် အကလက်မျာသအာသလုံသ လိုအပ်သည်)။ အတန်သအစာသရုပ်ရဟင်(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # OK (နဟစ်အကလက်သည် ရလေသချယ်နိုင်သည်) m3: Movie = {"year": 2022} # အမဟာသ၊ လိုအပ်သော ခေါင်သစဉ်အကလက်ကို မဖဌည့်ခဲ့ပါ)
  • TaskGroup အတန်သသည် အလုပ်အဖလဲ့ပဌီသမဌောက်ရန်စောင့်ဆိုင်သနေသည့် အပဌိုင်အဆိုင် ဆက်စပ်မန်နေဂျာကို အကောင်အထည်ဖော်ခဌင်သဖဌင့် asyncio module သို့ ပေါင်သထည့်ထာသပါသည်။ အဖလဲ့တစ်ခုသို့ အလုပ်မျာသထည့်ခဌင်သသည် create_task() နည်သလမ်သကို အသုံသပဌု၍ လုပ်ဆောင်ပါသည်။ async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(
)) task2 = tg.create_task(another_coro(
)) print("အလုပ်နဟစ်ခုလုံသ ယခုပဌီသပါပဌီ။")
  • ထပ်ထည့်ထာသသော အတန်သ၊ နည်သလမ်သနဟင့် အလဟဆင်သူ @dataclass_transform၊ သတ်မဟတ်သည့်အခါ၊ static type checker သည် @dataclasses.dataclass အလဟဆင်ကိရိယာကို အသုံသပဌုသကဲ့သို့ အရာဝတ္တုအာသ ဆက်ဆံသည်။ အောက်ဖော်ပဌပါ ဥပမာတလင်၊ CustomerModel အတန်သသည် @dataclasses.dataclass အလဟဆင်သူ နဟင့် အတန်သကဲ့သို့ အမျိုသအစာသ-စစ်ပါမည်။ id နဟင့် name variable မျာသကိုခလင့်ပဌုသည့် __init__ နည်သလမ်သတစ်ခုရဟိခဌင်သ။ @dataclass_transform() အတန်သ ModelBase: 
 အတန်သ CustomerModel(ModelBase): id: int name: str
  • ပုံမဟန်အသုံသအနဟုန်သမျာသတလင် atomic grouping ((?>
)) နဟင့် မနာလိုစိတ် (possessive) quantifiers (*+, ++, ?+, {m,n}+) ကို ပေါင်သထည့်နိုင်သည်။
  • sys.path သို့ အန္တရာယ်မကင်သနိုင်သော ဖိုင်လမ်သကဌောင်သမျာသ အလိုအလျောက် ပူသတလဲပါရဟိသည့် တလယ်တာမဟုကို ပိတ်ရန် "-P" အမိန့်ပေသစာကဌောင်သ ရလေသချယ်မဟုနဟင့် PYTHONSAFEPATH ပတ်၀န်သကျင် ပဌောင်သလဲနိုင်သော ပဌောင်သလဲမဟု။
  • ယခု "-V:" syntax ကို ပံ့ပိုသပေသသည့် Windows ပလပ်ဖောင်သအတလက် py.exe utility ကို သိသာစလာ မဌဟင့်တင်ခဲ့သည်။ / " ဖဌည့်စလက်ကာ "- . ” .
  • C API ရဟိ မက်ခရိုအမျာသအပဌာသကို ပုံမဟန် သို့မဟုတ် အငဌိမ်အင်လိုင်သလုပ်ဆောင်ချက်မျာသအဖဌစ် ပဌောင်သလဲထာသသည်။
  • uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, နဟင့် sunau module မျာသကို ရပ်ဆိုင်သထာသပဌီသ Python တလင် ဖယ်ရဟာသလိုက်ပါမည်။ 3.13 ထုတ်ပဌန်ခဌင်သ။ PyUnicode_Encode* လုပ်ဆောင်ချက်မျာသကို ဖယ်ရဟာသခဲ့သည်။

source: opennet.ru

မဟတ်ချက် Add