Te tukunga o te Python 3.9 te reo hotaka

I muri i te tau o te whanaketanga i tukuna te tukunga reo whakahōtaka nui Python 3.9. Ko Python 3.9 te tuku tuatahi i muri mai whakawhiti kaupapa kei runga huringa hou te whakarite me te tautoko i nga whakaputanga. Ko nga putanga nui hou ka mahia kotahi i te tau, ka tukuna nga whakahou whakatika ia rua marama. Ka tautokohia ia peka nui mo te kotahi me te hawhe tau, ka mutu ka hangaia etahi atu tau e toru me te haurua hei whakatika i nga whakaraeraetanga.

Ka timata te mahi mo te peka hou e rima marama i mua i te tukunga o te pekanga e whai ake nei, ara. i rite ki te tukunga o Python 3.9 i timata te whakamatautau alpha o te peka Python 3.10. Ka noho te peka Python 3.10 ki te tuku alpha mo nga marama e whitu, ka taapirihia nga ahuatanga hou ka whakatika nga pepeke. I muri i tenei, ka whakamatauria nga putanga beta mo nga marama e toru, i te waa ka aukatihia te taapiri i nga waahanga hou ka aro katoa ki te whakatika i nga pepeke. Ko nga marama e rua kua pahure ake nei i mua i te tukunga, ka noho te peka ki te waahi o te kaitono tuku, ka whakahaerea te whakapumautanga whakamutunga.

I roto i te tāpirihia nga mahi auaha i roto i te Python 3.9:

  • I roto i nga papakupu kua tautuhia ma te whakamahi i te karaehe korero i roto, puta mai tautoko mo nga kaiwhakahaere hanumi "|" me "|=" whakahōunga, e kīnaki ana i ngā tikanga {**d1, **d2} me te dict.update i whakaarohia i mua mō te hanumi papakupu.

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

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

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

  • Kei roto i te kohinga momo ko te rarangi, te dict, me te tuple, ka taea te whakamahi hei momo turanga me te kore kawemai mai i te waahanga patopato. Ko era. hei utu mo te patopato.Rārangi, patopato.Dict me te patopato.Tuple ka taea e koe te tohu inaianei
    whakarārangi noa, tohu me te tuple:

    def greet_all(ingoa: rārangi[str]) -> Kore:
    mo te ingoa i roto i nga ingoa:
    print("Kia ora", ingoa)

  • Ka whakaratohia nga taputapu ngawari mo te tuhi i nga mahi me nga taurangi. Mo te taapiri i nga tuhipoka, kua taapirihia he momo Tuhituhi hou ki te waahanga patopato, ka toro atu nga momo o naianei me etahi atu metadata ka taea te whakamahi mo te tātari pateko, mo te arotautanga wa-haere. Hei uru ki nga metadata mai i te waehere, kua taapirihia te tawhā include_extras ki te tikanga typing.get_type_hints().

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

  • Toned down nga whakaritenga wetereo mo nga kai-whakapaipai - ko nga kupu e tika ana mo te whakamahi i nga poraka ka taea te whakamahi inaianei hei whakapaipai. Ko te huringa i tino pai ake te panui o te waehere PyQt5 me te whakangawari i te tiaki o tenei waahanga:

    Ko:
    button_0 = pātene[0] @button_0.clicked.connect

    Inaianei ka taea e koe te tuhi:
    @pātene[0].pāwhiri.hono

  • Ki te whare pukapuka paerewa kua taapirihia kōwae roheinifo, kei roto nga korero mai i te papaaarangi rohe waahi IANA.

    >>> mai i zoneinfo kawemai ZoneInfo
    >>> mai i te datetime kawemai datetime, timedelta
    >>> # Te wa raumati
    >>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
    >>> tā(dt)
    2020-10-31 12:00:00-07:00

    >>> dt.tzname()
    'PDT'

    >>> # Waa paerewa
    >>> dt += tohuwā(ra=7)
    >>> tā(dt)
    2020-11-07 12:00:00-08:00

    >>> tā(dt.tzname())
    PST

  • Kua taapirihia te kōwae graphlib, kei roto whakatinana te tautoko mo te whakariterite topological o nga kauwhata.
  • Ka whakaarohia tikanga hou mo te tango i nga tohumua me nga pito raina - str.removeprefix(prefix) me te str.removesuffix(suffix). Kua taapirihia nga tikanga ki te str, paita, bytearray me nga kohinga.UserString mea.

    >>> s = "FooBar"
    >>> s.removeprefix("Foo")
    'Pae'

  • Kua whai waahi kaiporoporo hou titi (Parsing Expression Grammar), i whakakapi i te parser LL(1). Na te whakamahinga o te parser hou i taea ai te whakakore i etahi o nga "hacks" i whakamahia ki te karo i nga here i roto i te LL(1), me te tino whakaiti i nga utu mo nga mahi mo te pupuri i te parser. Mo te mahi, he rite tonu te ahua o te parser hou ki tera o mua, engari kei mua tonu i a ia mo te ngawari, e taea ai e koe te waatea ake i te wa e hoahoa ana i nga ahuatanga reo hou. Ka mau tonu te waehere parser tawhito mo tenei wa ka taea te whakahoki mai ma te whakamahi i te haki "-X oldparser" me te taurangi taiao "PYTHONOLDPARSER=1", engari ka tangohia i te tukunga 3.10.
  • Ka whakaratohia te kaha mo nga tikanga toronga C ki te uru ki te ahua o nga waahanga kua tautuhia ma te whakamahi i te tohu tohutoro tika hei utu mo te rapu i te ahua o te waahanga ma te whakamahi i te mahi PyState_FindModule. Ma te huringa ka taea e koe te whakanui ake i te mahinga o nga waahanga C ma te whakaiti, te whakakore rawa ranei i te utu mo te tirotiro i te ahua o te waahanga. Hei hono i tetahi kōwae me tetahi akomanga, ka whakaarohia te C-function PyType_FromModuleAndSpec(), ki te tiki i te kōwae me tona ahuatanga, ko nga mahi-C PyType_GetModule() me PyType_GetModuleState() ka whakaarohia, me te whakarato i tetahi tikanga uru ki te akomanga i roto i te mea e tautuhia ana, ko te PyCMethod mahi-C me te haki METH_METHOD ka whakaarohia. .
  • Kaikohi para tuku mai i te maukati i nga kohinga e mau ana i nga mea whakaahuru ka noho uru ki waho i muri i te whakahaerenga o te kaiwhakaoti.
  • Tikanga taapiri os.pidfd_open, ka taea e te Linux kernel subsystem "pidfd" te whakamahi ki te hapai i te ahuatanga o te whakamahi ano i te PID (e hono ana te pidfd ki tetahi tukanga motuhake me te kore e huri, ka taea te hono tetahi PID ki tetahi atu tukanga i muri i te tukanga o naianei e pa ana ki taua PID ka mutu. ).
  • Ko te tautoko mo te tohu Unicode kua whakahoutia ki te putanga 13.0.0.
  • I whakakorea turuturu mahara i te whakaara ano i te kaiwhakamaori Python i roto i te mahi ano.
  • Ko te mahinga o te awhe momo hanga-i roto, te tuple, te huinga, te frozenset, te rarangi me te dict kua arotautia. whakatinana ma te whakamahi i te kawa pokatata Vectorcall kia tere ake te uru ki nga taonga kua tuhia ki te reo C.
  • Kōwae _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, rauemi, wa me _weakref ka utaina mai i arawhitinga i roto i nga waahanga maha.
  • Ko nga waahanga pukapuka paerewa oroop, ast, grp, _hashlib, pwd, _posixsubprocess, matapōkere, tīpako, struct, termios me te zlib kua tahuri ki te whakamahi kua herea ABI pumau, e whakaoti ana i te raruraru o te whakahaerenga o nga huihuinga o nga waahanga toronga mo nga momo putanga o Python (i te wa e whakahou ana i te putanga, kaore he take ki te hanga ano i nga waahanga taapiri, me nga waahanga kua whakahiatohia mo te 3.9 ka taea te mahi i te peka 3.10).
  • Kua whakakorehia e te kōwae asyncio te tautoko mo te tawhā reuse_address na runga i nga take haumarutanga pea (ma te whakamahi i te SO_REUSEADDR mo te UDP i runga Linux ka taea e nga tikanga rereke te taapiri i nga turanga whakarongo ki tetahi tauranga UDP).
  • Kua taapirihia nga arotautanga hou, hei tauira, te pai ake o te mahi a nga kaikawe tohu i roto i nga tono miro-maha, te tere tere o te waahanga tukatuka iti i roto i te taiao FreeBSD, me te tere ake o te taurangi o nga taurangi rangitahi (whakatakoto i te taurangi i roto i te kupu "mo y i roto i [expr ]” kei te rite ki te whakaaturanga “y = expr” "). Ko te nuinga o nga whakamatautau whakaatu te hekenga mahi ka whakaritea ki te peka 3.8 (ka kitea te tere i roto i nga whakamatautau tuhi_local me te tuhi_deque):

    Putanga Python 3.4 3.5 3.6 3.7 3.8 3.9
    ————— — — — — ——

    Taurangi me te huanga uru panui:
    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
    panui_ao 15.5 19.0 14.3 13.6 7.6 7.7
    panui_hanga 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
    panui_whakaingoatuple 73.8 57.5 45.0 46.8 18.4 23.2
    te tikanga panui 37.6 37.9 29.6 26.9 27.7 45.9

    Taurangi me te huanga uru tuhi:
    tuhi_rohe 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
    tuhi_ao 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

    Hanganga raraunga uru panui:
    rārangi_pānui 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
    panui_tohu 24.3 25.7 22.3 23.0 21.0 22.5
    panui_strdict 22.6 24.3 19.5 21.2 18.9 21.6

    Hanganga raraunga uru tuhi:
    rārangi_tuhi 27.1 28.5 22.5 21.6 20.0 21.6
    tuhi_deque 28.7 30.1 22.7 21.8 23.5 23.2
    tuhi_tohu 31.4 33.3 29.3 29.2 24.7 27.8
    tuhi_strdict 28.4 29.9 27.5 25.2 23.1 29.8

    Ngā mahi tāpae (tūtira rānei):
    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

    Koropiko Wā:
    kopiko_i runga 0.5 0.6 0.4 0.3 0.3 0.3

  • Kua tangohia he maha nga mahi a Python 2.7 me nga tikanga i whakakorehia i mua ka puta he Whakatupato Whakakore i te tukunga o mua, tae atu ki te tikanga unescape() i html.parser.HTMLParser,
    tostring() and fromstring() in array.array, isAlive() in threading.Thread, getchildren() and getiterator() in ElementTree, sys.getcheckinterval(), sys.setcheckinterval(), asyncio.Task.current_task(), asyncio.Task.all_tasks(), base64.encodestring() and base64.decodestring().

Source: opennet.ru

Tāpiri i te kōrero