د Python 3.9 پروګرام کولو ژبه خپرول

د یو کال پرمختګ وروسته وړاندې شوی د پام وړ پروګرامینګ ژبې خپرول پیټون 3.9. Python 3.9 وروسته لومړی ریلیز و لیږدول پروژه روانه ده نوی دوران د خپرونو چمتو کول او ملاتړ. نوي لوی ریلیزونه به اوس په کال کې یو ځل تولید شي، او اصلاحي تازه معلومات به په هرو دوو میاشتو کې خپاره شي. د هرې مهمې څانګې سره به د یو نیم کال لپاره ملاتړ کیږي، وروسته له هغې به د زیانونو د حل لپاره نور درې نیم کاله پراختیا ومومي.

په نوې څانګه کې کار اوس د بلې څانګې د خوشې کیدو څخه پنځه میاشتې دمخه پیل کیږي، د بیلګې په توګه. د Python 3.9 خوشې کولو سره همغږي پیل شو د Python 3.10 څانګې الفا ازموینه. د Python 3.10 څانګه به د اوو میاشتو لپاره په الفا ریلیز کې وي، چې په ترڅ کې به یې نوې بڼې اضافه شي او بګونه به حل شي. له دې وروسته به د بیټا نسخې درې میاشتې ازمویل شي، چې په ترڅ کې به یې د نویو فیچرونو اضافه کول منع وي او ټول پام به د بګونو اصلاح ته ورکول کیږي. د خوشې کیدو څخه دوه میاشتې دمخه، څانګه به د خوشې کیدو امیدوار مرحله کې وي، په کوم کې چې وروستی ثبات به ترسره شي.

د زیاته کړه نوښتونه په Python 3.9 کې:

  • په لغتونو کې د جوړ شوي ډیکټ کلاس په کارولو سره تعریف شوي، ښکاره شوه د ادغام آپریټرانو لپاره ملاتړ "|" او "|=" تازه معلومات، کوم چې د لغتونو د یوځای کولو لپاره مخکې وړاندیز شوي {**d1، **d2} او dict.update میتودونه بشپړوي.

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

    >>> x | y
    {'key1': 'value1 له x', 'key2': 'value2 له y', 'key3': 'value3 له y'}

    >>> y | x
    {'key2': 'value2 له x', 'key3': 'value3 له y', 'key1': 'value1 له x'}

  • د ډولونو جوړ شوي ټولګه کې لیست، ډیک، او ټپل شامل دي، کوم چې د ټایپینګ ماډل څخه واردولو پرته د بیس ډولونو په توګه کارول کیدی شي. هغوی. د ټایپ کولو پر ځای. لیست، ټایپ کول. ډیکټ او ټایپ کول. تاسو اوس کولی شئ مشخص کړئ
    یوازې لیست، لیک او ټپل:

    def greet_all(نومونه: لیست[str]) -> هیڅ نه:
    په نومونو کې د نوم لپاره:
    چاپ ("سلام"، نوم)

  • ورکړل شوي دي د دندو او متغیرونو تشریح کولو لپاره انعطاف وړ وسیلې. د تشریحاتو ضمیمه کولو لپاره ، د ټایپ کولو ماډل کې نوی تشریح شوی ډول اضافه شوی ، د اضافي میټاډاټا سره موجوده ډولونه پراخوي چې د جامد تحلیل یا د چلولو وخت اصلاح لپاره کارول کیدی شي. د کوډ څخه میټاډاټا ته د لاسرسي لپاره ، د typing.get_type_hints() میتود کې include_extras پیرامیټر اضافه شوی.

    charType = تشریح شوی[int, ctype("char")] UnsignedShort = تشریح شوی [int, struct2.ctype('H')]

  • ټیټ شوی د سینګار کونکو لپاره ګرامري اړتیاوې - هر هغه څرګندونه چې د کارولو لپاره مناسبه ده که چیرې بلاکونه اوس د سینګار کونکي په توګه کارول کیدی شي. بدلون د پام وړ د PyQt5 کوډ لوستلو وړتیا ښه کړې او د دې ماډل ساتنه یې ساده کړې:

    وو:
    button_0 = تڼۍ[0] @button_0.clicked.connect

    اوس تاسو کولی شئ ولیکئ:
    @buttons[0].clicked.connect

  • معياري کتابتون ته زیاته کړه موډل زونینفوپه کوم کې چې د IANA د وخت زون ډیټابیس معلومات شامل دي.

    >>> د زون انفو څخه د زون انفو وارد کړئ
    >>> د نیټې وخت واردولو نیټه وخت، وخت ډیلټا
    >>> # د اوړي وخت
    >>> dt = نیټه وخت(2020, 10, 31, 12, tzinfo=ZoneInfo("امریکا/لاس_انجیلس"))
    >>> چاپ (dt)
    2020-10-31 12:00:00-07:00

    >>> dt.tzname()
    'PDT'

    >>> # معیاري وخت
    >>> dt += timedelta(ورځو=7)
    >>> چاپ (dt)
    2020-11-07 12:00:00-08:00

    >>> چاپ(dt.tzname())
    پي ایس ټي

  • د ګرافلیب ماډل اضافه شوی، په کوم کې پلي شوي د ګرافونو د توپولوژیکي ترتیب لپاره ملاتړ.
  • وړاندیز شوی د مخکینیو او کرښو د پای ته رسولو لپاره نوې طریقې - str.removeprefix(prefix) او str.removesuffix(suffix). میتودونه په str، bytes، bytearray او ټولګه کې اضافه شوي دي.UserString څیزونه.

    >>> s = "FooBar"
    >>> s.removeprefix("Foo")
    'بار'

  • ښکېل نوی پارسر PEG (Parsing expression Grammar) چې د پارسر پر ځای بدل شوی LL(1). د نوي پارسر کارولو دا ممکنه کړې چې د ځینو "هیکونو" څخه ځان خلاص کړي چې په LL(1) کې د محدودیتونو څخه د تیریدو لپاره کارول کیږي، او د پام وړ د پارسر ساتلو لپاره د کار لګښتونه کم کړي. د فعالیت په شرایطو کې، نوی پارسر تقریبا د تیر په څیر په ورته کچه کې دی، مګر د انعطاف په شرایطو کې د پام وړ مخکې دی، کوم چې تاسو ته اجازه درکوي چې د نوي ژبې ځانګړتیاوې ډیزاین کولو په وخت کې ډیر وړیا احساس وکړئ. زوړ پارسر کوډ د اوس لپاره ساتل شوی او د "-X oldparser" بیرغ یا "PYTHONOLDPARSER=1" چاپیریال متغیر په کارولو سره بیرته راستانه کیدی شي، مګر په 3.10 خوشې کولو کې به لیرې شي.
  • چمتو کړي د ماډلونو حالت ته د لاسرسي لپاره د C توسیع میتودونو وړتیا په کوم کې چې دوی د PyState_FindModule فنکشن په کارولو سره د ماډل حالت لټون کولو پرځای د مستقیم پوائنټر ډیریفرنس په کارولو سره تعریف شوي. بدلون تاسو ته اجازه درکوي د ماډل حالت چیک کولو سر سر ټیټولو یا په بشپړ ډول له مینځه وړلو سره د C ماډلونو فعالیت زیات کړئ. د ټولګي سره د ماډل د شریکولو لپاره، د C-function PyType_FromModuleAndSpec() وړاندیز شوی، د ماډل او د هغه حالت ترلاسه کولو لپاره، د C-functions PyType_GetModule() او PyType_GetModuleState() وړاندیز شوی، او ټولګي ته د لاسرسي میتود چمتو کولو لپاره. په کوم کې چې دا تعریف شوی، د C-function PyCMethod او METH_METHOD بیرغ وړاندیز شوی. .
  • د کثافاتو راټولونکی سپارل د تالاشۍ راټولولو څخه چې بیا متحرک شوي توکي لري چې د پای ته رسیدو وروسته بهر ته د لاسرسي وړ پاتې کیږي.
  • اضافه شوی طریقه os.pidfd_open، کوم چې د لینکس کرنل سب سیسټم "pidfd" ته اجازه ورکوي چې د PID بیا کارونې وضعیت اداره کولو لپاره وکارول شي (pidfd د یو ځانګړي پروسې سره تړاو لري او نه بدلیږي ، پداسې حال کې چې PID د اوسني پروسې سره تړلی د هغه PID پای ته رسیدو وروسته د بلې پروسې سره تړل کیدی شي. ).
  • د یونیکوډ مشخصاتو لپاره ملاتړ 13.0.0 نسخه ته تازه شوی.
  • له منځه وړل د حافظې لیک کله چې په ورته پروسه کې د Python ژباړونکي بیا پیل کول.
  • د جوړ شوي ډولونو رینج ، ټپل ، سیټ ، منجمد سیټ ، لیست او ډیکټ فعالیت غوره شوی. پلي شوي د C ژبه کې لیکل شوي شیانو ته د ګړندي لاسرسي لپاره د ویکتورکال شارټ کټ پروتوکول کارولو له لارې.
  • ماډلونه _abc، audioop، _bz2، _codecs، _contextvars، _crypt، _functools، _json، _locale، آپریټر، سرچینه، وخت او _weakref له دې څخه بار شوي دي په څو مرحلو کې پیل کول.
  • د معیاري کتابتون ماډلونه audioop، ast، grp، _hashlib، pwd، _posixsubprocess، random، Select، struct، termios او zlib د محدودیت کارولو لپاره بدل شوي مستحکم ABI، کوم چې د Python د مختلف نسخو لپاره د توسیع ماډلونو مجلسونو د فعالیت ستونزه حل کوي (کله چې نسخه تازه کوي ، د توسیع ماډلونو بیا جوړولو ته اړتیا نشته ، او د 3.9 لپاره ترتیب شوي ماډلونه به د 3.10 څانګې کې کار کولو وړ وي).
  • د asyncio ماډل د احتمالي امنیتي مسلو له امله د reuse_address پیرامیټر لپاره ملاتړ له پامه غورځولی دی (په لینکس کې د UDP لپاره د SO_REUSEADDR کارول مختلف پروسې ته اجازه ورکوي چې د UDP پورټ ته د اوریدلو ساکټونه ضمیمه کړي).
  • نوي اصلاحونه اضافه شوي، د بیلګې په توګه، په څو اړخیزو غوښتنلیکونو کې د سیګنال هینډلرانو ښه فعالیت، د FreeBSD چاپیریال کې د فرعي پروسس ماډل سرعت زیات شوی، او د لنډمهاله متغیرونو ګړندۍ ګمارل (په بیان کې د یو متغیر ټاکل "د y لپاره په [expr] کې ]" اوس د "y = expr"" بیان په څیر کار کوي). په عموم کې، ډیری ازموینې ښودل د شاخ 3.8 په پرتله د فعالیت کمښت (چټک یوازې د رایټ_لوکل او رایټ_ډیکو ازموینې کې لیدل کیږي):

    د پایتون نسخه 3.4 3.5 3.6 3.7 3.8 3.9
    ———————————

    متغیر او خاصیت لوستلو لاسرسی:
    لوستل_ ځایی 7.1 7.1 5.4 5.1 3.9 4.0
    غیر محلي لوستل 7.1 8.1 5.8 5.4 4.4 4.8
    لوستل_ګلوبل 15.5 19.0 14.3 13.6 7.6 7.7
    لوستل_جوړول 21.1 21.6 18.5 19.0 7.5 7.7
    لوستل_کلاسوار_د_کلاس 25.6 26.5 20.7 19.5 18.4 18.6
    لوستل_کلاسوار_څخه_مثال 22.8 23.5 18.8 17.1 16.4 20.1
    د لوستلو_مثال 32.4 33.1 28.0 26.3 25.4 27.7
    لوستل_انسټانسوار_سلاټونه 27.8 31.3 20.8 20.8 20.2 24.5
    لوستل_نوم ټوک 73.8 57.5 45.0 46.8 18.4 23.2
    د لوستلو_بندولو طریقه 37.6 37.9 29.6 26.9 27.7 45.9

    متغیر او خاصیت لیکلو لاسرسی:
    ليکنه_لوکل 8.7 9.3 5.5 5.3 4.3 4.2
    غیر محلي لیکل 10.5 11.1 5.6 5.5 4.7 4.9
    د_ګلوبل ليکنه 19.7 21.2 18.0 18.0 15.8 17.2
    د لیکلو_کلاسوار 92.9 96.0 104.6 102.1 39.2 43.2
    44.6 45.8 40.0 38.9 35.5 40.7 ولیکئ
    د_انسټانسوار_سلاټونه 35.6 36.1 27.3 26.6 25.7 27.7 ولیکئ

    د معلوماتو جوړښت لوستلو لاسرسی:
    د لوستلو_لست 24.2 24.5 20.8 20.8 19.0 21.1
    لوستل 24.7 25.5 20.2 20.6 19.8 21.6
    لوستل 24.3 25.7 22.3 23.0 21.0 22.5
    لوستل 22.6 24.3 19.5 21.2 18.9 21.6

    د معلوماتو جوړښت لیکلو لاسرسی:
    د لیکلو_لست 27.1 28.5 22.5 21.6 20.0 21.6
    د لیکلو_ډیک 28.7 30.1 22.7 21.8 23.5 23.2
    ليکنه 31.4 33.3 29.3 29.2 24.7 27.8
    د لیکلو_ستریت 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

    د مهال ویش:
    لوپ_اوور سر 0.5 0.6 0.4 0.3 0.3 0.3

  • لرې کړل د Python 2.7 ډیری دندې او میتودونه چې مخکې له پامه غورځول شوي وو او په تیرو خپرونو کې د DeprecationWarning په پایله کې په html.parser.HTMLParser کې د unescape() میتود په شمول،
    tostring() او fromstring() په array.array کې، isAlive() په threading.Thread کې، getchildren() او getiterator() په ElementTree کې، sys.getcheckinterval()، sys.setcheckinterval()، asyncio.Task.current_task()، asyncio.Task.all_tasks()، base64.encodestring() او base64.decodestring().

سرچینه: opennet.ru

Add a comment