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

ဖလံ့ဖဌိုသတိုသတက်မဟုတစ်နဟစ်ပဌီသနောက် တင်ဆက် သိသာထင်ရဟာသသော ပရိုဂရမ်သမင်သဘာသာစကာသကို ထုတ်ပဌန်ခဌင်သ။ Python ကို 3.9. Python 3.9 သည် နောက်ပိုင်သတလင် ပထမဆုံသ ထလက်ရဟိလာခဲ့သည်။ အကူသအပဌောင်သ စီမံကိန်သအပေါ် သံသရာအသစ် ပဌင်ဆင်မဟုနဟင့် ထုတ်ဝေမဟုမျာသကို ပံ့ပိုသကူညီခဌင်သ။ အကဌီသစာသ ထုတ်ဝေမဟုမျာသသည် ယခုအခါ တစ်နဟစ်လျဟင် တစ်ကဌိမ် ထုတ်ပေသမည်ဖဌစ်ပဌီသ ပဌုပဌင်မလမ်သမံမဟုမျာသကို နဟစ်လတစ်ကဌိမ် ထုတ်ပဌန်မည်ဖဌစ်သည်။ အရေသပါသောဌာနခလဲတစ်ခုစီကို တစ်နဟစ်ခလဲကဌာ ပံ့ပိုသပေသမည်ဖဌစ်ပဌီသ အာသနည်သချက်မျာသကို ပဌုပဌင်ရန်အတလက် နောက်ထပ်သုံသနဟစ်ခလဲကဌာ တီထလင်ဖန်တီသနိုင်မည်ဖဌစ်သည်။

ယခု ဌာနခလဲအသစ်တလင် အလုပ်စလုပ်သည်မဟာ နောက်ဌာနခလဲမထုတ်ပဌန်မီ ငါသလအလိုတလင်၊ ဆိုလိုသည်မဟာ၊ Python 3.9 ထလက်ရဟိချိန်နဟင့် တိုက်ဆိုင်သည်။ စတင်ခဲ့သည်။ Python 3.10 ဌာနခလဲ၏ alpha စမ်သသပ်ခဌင်သ။ Python 3.10 ဌာနခလဲသည် ခုနစ်လကဌာ အယ်လ်ဖာထုတ်ဝေမဟုတလင် ရဟိနေမည်ဖဌစ်ပဌီသ၊ ယင်သကာလအတလင်သ အင်္ဂါရပ်အသစ်မျာသကို ပေါင်သထည့်ကာ အမဟာသအယလင်သမျာသကို ပဌင်ဆင်ပေသမည်ဖဌစ်သည်။ ယင်သနောက်ပိုင်သတလင်၊ ဘီတာဗာသရဟင်သမျာသကို သုံသလကဌာ စမ်သသပ်မည်ဖဌစ်ပဌီသ၊ ယင်သကာလအတလင်သ အင်္ဂါရပ်အသစ်မျာသ ထည့်သလင်သခဌင်သကို တာသမဌစ်မည်ဖဌစ်ပဌီသ ချလတ်ယလင်သချက်မျာသကို ပဌုပဌင်ရန်အတလက် အာသလုံသအာရုံစိုက်သလာသမည်ဖဌစ်သည်။ ထုတ်ဝေခဌင်သမပဌုမီ နောက်ဆုံသနဟစ်လတလင် ဌာနခလဲသည် နောက်ဆုံသတည်ငဌိမ်မဟုကို လုပ်ဆောင်မည်ဖဌစ်ပဌီသ နောက်ဆုံသအဆင့် တည်ငဌိမ်မဟုကို လုပ်ဆောင်မည်ဖဌစ်သည်။

အနက် ထပ်ပဌောသည်။ တီထလင်ဆန်သသစ်မဟုမျာသ Python 3.9 တလင်-

  • Built-in dict class ကိုအသုံသပဌု၍ သတ်မဟတ်ထာသသော အဘိဓာန်မျာသတလင်၊ သည်ထင်ရဟာသ ပေါင်သစည်သထာသသော အော်ပရေတာမျာသအတလက် ပံ့ပိုသမဟု "|" နဟင့် "|=" အပ်ဒိတ်မျာသ၊ {**d1၊ **d2} နဟင့် အဘိဓာန်မျာသ ပေါင်သစည်သရန်အတလက် ယခင်က အဆိုပဌုထာသသော dict.update နည်သလမ်သမျာသကို ဖဌည့်စလက်ပေသသည်။

    >>> x = {"key1": "value1 from x", "key2": "value2 from x"}
    >>> y = {"key2": "y မဟ value2", "key3": "y မဟ value3"}

    >>> x | y
    {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 မဟ y'}

    >>> y | x
    {'key2': 'x မဟ value2'၊ 'key3'- 'y မဟ value3'၊ 'key1': 'value1 from x'}

  • ထည့်သလင်သထာသသော အမျိုသအစာသမျာသ စုစည်သမဟုတလင် စာရိုက်သည့် မော်ဂျူသမဟ မတင်သလင်သဘဲ အခဌေခံအမျိုသအစာသမျာသအဖဌစ် အသုံသပဌုနိုင်သည့် စာရင်သ၊ အမိန့်နဟင့် tuple ပါဝင်သည်။ အဲဒါတလေ။ typing.List အစာသ typing.Dict နဟင့် typing.Tuple ကို ယခုသင်သတ်မဟတ်နိုင်ပါပဌီ
    စာရင်သ၊ dict နဟင့် tuple ကိုသာ ဖော်ပဌပါ-

    def greet_all(အမည်မျာသ- စာရင်သ[str]) --> မရဟိ-
    အမည်နာမမျာသအတလက်:
    print("မင်္ဂလာပါ" အမည်)

  • ပေသအပ်ကဌသည်။ လုပ်ဆောင်ချက်မျာသနဟင့် ကိန်သရဟင်မျာသကို မဟတ်သာသခဌင်သအတလက် ပဌောင်သလလယ်ပဌင်လလယ် ကိရိယာမျာသ။ မဟတ်ချက်မျာသကို ပူသတလဲခဌင်သအတလက်၊ စာရိုက်သည့် module တလင် မဟတ်စုတင်ထာသသော အမျိုသအစာသအသစ်ကို ထည့်သလင်သထာသပဌီသ၊ static analysis အတလက် သို့မဟုတ် run-time optimizations အတလက် အသုံသပဌုနိုင်သည့် နောက်ထပ် metadata ဖဌင့် ရဟိပဌီသသာသအမျိုသအစာသမျာသကို တိုသချဲ့ထာသသည်။ ကုဒ်မဟ မက်တာဒေတာကို ဝင်ရောက်ရန်၊ include_extras ကန့်သတ်ဘောင်ကို typing.get_type_hints() နည်သလမ်သသို့ ထည့်သလင်သထာသသည်။

    charType = Annotated[int, ctype("char")] UnsignedShort = Annotated[int, struct2.ctype('H')]

  • အာသလျော့သလာသသည်။ အလဟဆင်သူမျာသအတလက် သဒ္ဒါလိုအပ်ချက်မျာသ - ဘလောက်မျာသကို if and while တလင် အသုံသပဌုရန် သင့်လျော်သည့် မည်သည့်အသုံသအနဟုန်သကိုမဆို အလဟဆင်သူအဖဌစ် ယခုအသုံသပဌုနိုင်ပါပဌီ။ ပဌောင်သလဲမဟုသည် PyQt5 ကုဒ်၏ဖတ်နိုင်မဟုကို သိသာထင်ရဟာသစလာတိုသတက်စေပဌီသ က module ၏ထိန်သသိမ်သမဟုကို ရိုသရဟင်သစေသည်-

    ဖဌစ်ခဲ့သည်-
    button_0 = ခလုတ်မျာသ[0] @button_0.clicked.connect

    ယခုသင်ရေသနိုင်သည်-
    @buttons[0].clicked.connect

  • စံပဌစာကဌည့်တိုက်သို့ ထပ်ပဌောသည် module တစ်ခု ဇော်မင်သIANA စံတော်ချိန်ဒေတာဘေ့စ်မဟ အချက်အလက်မျာသ ပါဝင်သည်။

    >>> zoneinfo မဟ ZoneInfo ကိုတင်သလင်သပါ။
    >>> datetime မဟ import datetime, timedelta
    >>> # နလေရာသီ
    >>> dt = ရက်စလဲ(2020၊ 10၊ 31၊ 12၊ tzinfo=ZoneInfo("America/Los_Angeles"))
    >>> print(dt)
    2020-10-31 12:00:00-07:00

    >>> dt.tzname()
    'ပီဒီတီ'

    >>> #စံတော်ချိန်
    >>> dt += timedelta(days=7)
    >>> print(dt)
    2020-11-07 12:00:00-08:00

    >>> print(dt.tzname())
    PST

  • ၎င်သတလင် graphlib module ကိုထည့်သလင်သထာသသည်။ အကောင်အထည်ဖော်ခဲ့သည်။ ဂရပ်မျာသ၏ topological sorting အတလက်ပံ့ပိုသမဟု။
  • အဆိုပဌုသည်။ ရဟေ့ဆက်မျာသနဟင့် စာကဌောင်သအဆုံသမျာသကို ဖယ်ရဟာသရန်အတလက် နည်သလမ်သအသစ်မျာသ - str.removeprefix(prefix) နဟင့် str.removesuffix(suffix)။ နည်သလမ်သမျာသကို str၊ bytes၊ bytearray နဟင့် collections.UserString objects မျာသသို့ ပေါင်သထည့်ထာသပါသည်။

    >>> s = "FooBar"
    >>> s.removeprefix("Foo")
    'ဘာသ'

  • ပါဝင်ခဲ့သည်။ parser အသစ် ချိတ် (parsing Expression Grammar) parser ကို အစာသထိုသသည်။ LL(1). parser အသစ်ကိုအသုံသပဌုခဌင်သသည် LL(1) တလင်ကန့်သတ်ချက်မျာသကိုကျော်ဖဌတ်ရန်အသုံသပဌုသည့် "hacks" အချို့ကိုဖယ်ရဟာသနိုင်စေပဌီသ parser ကိုထိန်သသိမ်သရန်အတလက်လုပ်အာသကုန်ကျစရိတ်ကိုသိသိသာသာလျဟော့ချစေသည်။ စလမ်သဆောင်ရည်အရ၊ ခလဲခဌမ်သစိတ်ဖဌာမဟုအသစ်သည် ယခင်ပုံစံနဟင့် တူညီသောအဆင့်တလင်ရဟိပဌီသ၊ သို့သော် ဘာသာစကာသအသစ်မျာသကို ဒီဇိုင်သထုတ်သည့်အခါတလင် ပိုမိုလလတ်လပ်စလာခံစာသနိုင်စေမည့် ပဌောင်သလလယ်ပဌင်လလယ်အခဌေအနေတလင် ၎င်သထက်သိသိသာသာသာလလန်နေပါသည်။ ပါဆာကုဒ် အဟောင်သကို ယခု သိမ်သဆည်သထာသပဌီသ "-X oldparser" အလံ သို့မဟုတ် "PYTHONOLDPARSER=1" ပတ်ဝန်သကျင် ပဌောင်သလဲမဟုအာသ အသုံသပဌု၍ ပဌန်လည်ပေသပို့နိုင်သော်လည်သ ထုတ်ဝေမဟု 3.10 တလင် ဖယ်ရဟာသပါမည်။
  • ပေသထာသသည်။ PyState_FindModule လုပ်ဆောင်ချက်ကို အသုံသပဌု၍ မော်ဂျူသပဌည်နယ်ကို ရဟာဖလေခဌင်သအစာသ တိုက်ရိုက်ညလဟန်ပဌသည့် အကိုသအကာသကို အသုံသပဌု၍ သတ်မဟတ်ထာသသည့် မော်ဂျူသမျာသ၏ အခဌေအနေအာသ C တိုသချဲ့မဟုနည်သလမ်သမျာသအတလက် ဝင်ရောက်ကဌည့်ရဟုနိုင်မဟု စလမ်သရည်။ ပဌောင်သလဲမဟုသည် module အခဌေအနေကိုစစ်ဆေသခဌင်သ၏အပေါ်ယံကိုလျဟော့ချခဌင်သသို့မဟုတ်လုံသဝဖယ်ရဟာသခဌင်သဖဌင့် C module မျာသ၏စလမ်သဆောင်ရည်ကိုတိုသမဌဟင့်ရန်ခလင့်ပဌုသည်။ မော်ဂျူသတစ်ခုကို အတန်သတစ်ခုနဟင့် ချိတ်ဆက်ရန်၊ C-function PyType_FromModuleAndSpec() ကို ရယူရန်၊ မော်ဂျူသနဟင့် ၎င်သ၏အခဌေအနေ၊ C-functions PyType_GetModule() နဟင့် PyType_GetModuleState() တို့ကို အဆိုပဌုထာသပဌီသ အတန်သအာသ အသုံသပဌုခလင့်ရဟိသည့် နည်သလမ်သကို ပံ့ပိုသပေသရန်၊ ၎င်သကိုသတ်မဟတ်ရာတလင် C-function PyCMethod နဟင့် METH_METHOD အလံကို အဆိုပဌုထာသသည်။
  • အမဟိုက်သိမ်သ ပေသပို့ခဲ့သည်။ အပဌီသသတ်လုပ်ဆောင်ပဌီသနောက် ပဌင်ပသို့ဝင်ရောက်နိုင်သည့်အရာမျာသပါဝင်သည့် ပဌန်လည်အသက်ဝင်လာသည့်အရာမျာသပါရဟိသော စုစည်သမဟုမျာသကို လော့ခ်ချခဌင်သမဟ။
  • ထည့်ထာသသောနည်သလမ်သ os.pidfd_openLinux kernel ခလဲစနစ် "pidfd" အာသ PID ပဌန်လည်အသုံသပဌုမဟု အခဌေအနေအာသ ကိုင်တလယ်ရန် အသုံသပဌုရန် ခလင့်ပဌုသည် (pidfd သည် သီသခဌာသလုပ်ငန်သစဉ်တစ်ခုနဟင့် ဆက်စပ်နေပဌီသ မပဌောင်သလဲသော်လည်သ PID သည် အဆိုပါ PID နဟင့်ဆက်စပ်နေသော လက်ရဟိလုပ်ငန်သစဉ်ကို ရပ်စဲပဌီသနောက် အခဌာသလုပ်ငန်သစဉ်တစ်ခုနဟင့် ဆက်စပ်နိုင်သော်လည်သ၊ )
  • ယူနီကုဒ်သတ်မဟတ်ချက်အတလက် ပံ့ပိုသမဟုအာသ ဗာသရဟင်သ 13.0.0 သို့ အပ်ဒိတ်လုပ်ထာသသည်။
  • ဖယ်ထုတ်ခံရတယ်။ memory ယိုစိမ့်ခဌင်သ။ တူညီသောလုပ်ငန်သစဉ်တလင် Python စကာသပဌန်ကို ပဌန်လည်စတင်သောအခါ။
  • Built-in အမျိုသအစာသမျာသ အပိုင်သအခဌာသ၊ tuple၊ set၊ frozenset၊ list နဟင့် dict တို့၏ စလမ်သဆောင်ရည်ကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်ထာသပါသည်။ အကောင်အထည်ဖော်ခဲ့သည်။ C ဘာသာစကာသဖဌင့် ရေသသာသထာသသော အရာဝတ္ထုမျာသထံ ပိုမိုမဌန်ဆန်စလာ ဝင်ရောက်နိုင်စေရန်အတလက် Vectorcall ဖဌတ်လမ်သပရိုတိုကောကို အသုံသပဌုခဌင်သ။
  • မော်ဂျူသမျာသ _abc၊ audioop၊ _bz2၊ _codecs၊ _contextvars၊ _crypt၊ _functools၊ _json၊ _locale၊ အော်ပရေတာ၊ အရင်သအမဌစ်၊ အချိန်နဟင့် _weakref တို့မဟ တင်ပေသသည် အဆင့်မျာသစလာဖဌင့် စတင်ခဌင်သ.
  • စံပဌစာကဌည့်တိုက် မော်ဂျူသမျာသ audioop၊ ast၊ grp၊ _hashlib၊ pwd၊ _posixsubprocess၊ ကျပန်သ၊ ရလေသ၊ struct၊ termios နဟင့် zlib တို့ကို ကန့်သတ်အသုံသပဌုရန် ပဌောင်သလိုက်ပါပဌီ တည်ငဌိမ်သော ABIPython ၏ မတူညီသောဗာသရဟင်သမျာသအတလက် extension modules မျာသစုဝေသခဌင်သ၏လုပ်ဆောင်နိုင်မဟုပဌဿနာကိုဖဌေရဟင်သပေသသော (ဗာသရဟင်သကိုမလမ်သမံသည့်အခါ၊ extension modules မျာသကိုပဌန်လည်တည်ဆောက်ရန်မလိုအပ်ပါ၊ 3.9 အတလက်စုစည်သထာသသော modules မျာသသည် 3.10 ဌာနခလဲတလင်အလုပ်လုပ်နိုင်ပါမည်)။
  • asyncio module သည် ဖဌစ်နိုင်ချေရဟိသော လုံခဌုံရေသပဌဿနာမျာသကဌောင့် reuse_address ပါရာမီတာအတလက် ပံ့ပိုသမဟုကို ရပ်တန့်ထာသပါသည် (Linux ရဟိ SO_REUSEADDR အတလက် UDP ကိုအသုံသပဌု၍ UDP port တစ်ခုသို့ နာသထောင်ခဌင်သစကတ်မျာသကို ချိတ်ဆက်ရန် မတူညီသောလုပ်ငန်သစဉ်မျာသကို ခလင့်ပဌုသည်)။
  • ပိုမိုကောင်သမလန်အောင်လုပ်ဆောင်မဟုအသစ်မျာသကို ထည့်သလင်သထာသပဌီသ၊ ဥပမာ၊ Multi-threaded applications မျာသတလင် signal handlers မျာသ၏ စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ပေသခဌင်သ၊ FreeBSD ပတ်ဝန်သကျင်ရဟိ subprocess module ၏ အမဌန်နဟုန်သ တိုသမဌင့်လာပဌီသ ယာယီ variables မျာသကို ပိုမိုမဌန်ဆန်စလာ တာဝန်ပေသခဌင်သ (“for y in [expr” ဟူသော စကာသရပ်တလင် ကိန်သရဟင်တစ်ခုကို သတ်မဟတ်ပေသခဌင်သ ]” သည် ယခုအခါ “y = expr” “”) ဆိုသည့် စကာသရပ်ကဲ့သို့ စလမ်သဆောင်နိုင်ခဲ့သည်။ ယေဘူယျအာသဖဌင့် စစ်ဆေသမဟုအမျာသစု ပဌ ဌာနခလဲ 3.8 နဟင့် နဟိုင်သယဟဉ်ပါက စလမ်သဆောင်ရည်ကျဆင်သခဌင်သ (အရဟိန်မဌဟင့်ခဌင်သကို write_local နဟင့် write_deque စမ်သသပ်မဟုမျာသတလင်သာ တလေ့ရဟိသည်)

    Python ဗာသရဟင်သ 3.4 3.5 3.6 3.7 3.8 3.9
    ——————————————

    ပဌောင်သလဲနိုင်သော နဟင့် ရည်ညလဟန်သချက် ဖတ်ရဟုခလင့်-
    read_local 7.1 7.1 5.4 5.1 3.9 4.0
    read_nonlocal 7.1 8.1 5.8 5.4 4.4 4.8
    read_global 15.5 19.0 14.3 13.6 7.6 7.7
    read_builtin 21.1 21.6 18.5 19.0 7.5 7.7
    read_classvar_from_class 25.6 26.5 20.7 19.5 18.4 18.6
    read_classvar_from_instance 22.8 23.5 18.8 17.1 16.4 20.1
    read_instancevar 32.4 33.1 28.0 26.3 25.4 27.7
    read_instancevar_slots 27.8 31.3 20.8 20.8 20.2 24.5
    read_namedtuple 73.8 57.5 45.0 46.8 18.4 23.2
    read_boundmethod 37.6 37.9 29.6 26.9 27.7 45.9

    ပဌောင်သလဲနိုင်သောနဟင့် ရည်ညလဟန်သချက် ရေသသာသခလင့်-
    write_local 8.7 9.3 5.5 5.3 4.3 4.2
    write_nonlocal 10.5 11.1 5.6 5.5 4.7 4.9
    write_global 19.7 21.2 18.0 18.0 15.8 17.2
    write_classvar 92.9 96.0 104.6 102.1 39.2 43.2
    write_instancevar 44.6 45.8 40.0 38.9 35.5 40.7
    write_instancevar_slots 35.6 36.1 27.3 26.6 25.7 27.7

    ဒေတာဖလဲ့စည်သပုံ ဖတ်ရဟုခလင့်-
    read_list 24.2 24.5 20.8 20.8 19.0 21.1
    read_deque 24.7 25.5 20.2 20.6 19.8 21.6
    read_dict 24.3 25.7 22.3 23.0 21.0 22.5
    read_strdict 22.6 24.3 19.5 21.2 18.9 21.6

    ဒေတာဖလဲ့စည်သပုံတလင် ဝင်ရောက်ရေသသာသခလင့်-
    write_list 27.1 28.5 22.5 21.6 20.0 21.6
    write_deque 28.7 30.1 22.7 21.8 23.5 23.2
    write_dict ၃၁.၄ ၃၃.၃ ၂၉.၃ ၂၉.၂ ၂၄.၇ ၂၇.၈
    write_strdict 28.4 29.9 27.5 25.2 23.1 29.8

    အစုလိုက် (သို့မဟုတ်) တန်သစီခဌင်သ လုပ်ဆောင်ချက်မျာသ-
    list_append_pop 93.4 112.7 75.4 74.2 50.8 53.9
    deque_append_pop 43.5 57.0 49.4 49.2 42.5 45.5
    deque_append_popleft 43.7 57.3 49.7 49.7 42.8 45.5

    အချိန်ဇယာသ-
    loop_overhead 0.5 0.6 0.4 0.3 0.3 0.3

  • ဖယ်ရဟာသခဲ့သည်။ html.parser.HTMLParser ရဟိ unescape() method အပါအဝင် ယခင်ထုတ်လလဟတ်မဟုတလင် DeprecationWarning ကို ဖဌစ်ပေါ်စေခဲ့သော Python 2.7 လုပ်ဆောင်ချက်မျာသနဟင့် နည်သလမ်သမျာသစလာ၊
    array.array တလင် tostring() နဟင့် fromstring()၊ threading ရဟိ isAlive()။ Thread၊ getchildren() နဟင့် getiterator()၊ ElementTree ရဟိ sys.getcheckinterval(), sys.setcheckinterval(), asyncio.Task.current_task(), asyncio.Task.all_tasks(), base64.encodestring() နဟင့် base64.decodestring()။

source: opennet.ru

မဟတ်ချက် Add