Sgaoileadh cànan prògramadh Python 3.9

Às deidh bliadhna de leasachadh air a thaisbeanadh sgaoileadh cànan prògramadh cudromach Python 3.9. B’ e Python 3.9 a’ chiad fhoillseachadh às deidh sin eadar-ghluasad pròiseact air adhart cearcall ùr ullachadh agus taic airson fiosan. Thèid fiosan mòra ùra a chruthachadh a-nis uair sa bhliadhna, agus thèid ùrachaidhean ceartachaidh fhoillseachadh a h-uile dà mhìos. Gheibh gach meur cudromach taic airson bliadhna gu leth, agus às deidh sin thèid trì bliadhna gu leth eile a leasachadh gus so-leòntachd a cheartachadh.

Tha obair air meur ùr a-nis a’ tòiseachadh còig mìosan mus tèid an ath mheur a leigeil ma sgaoil, i.e. aig an aon àm ri sgaoileadh Python 3.9 thòisich deuchainn alpha air meur Python 3.10. Bidh meur Python 3.10 ann an alpha release airson seachd mìosan, nuair a thèid feartan ùra a chur ris agus bugaichean a shuidheachadh. Às deidh seo, thèid dreachan beta a dhearbhadh airson trì mìosan, nuair a thèid casg a chuir air feartan ùra a chuir ris agus thèid aire a thoirt do bhith a’ càradh bhiteagan. An dà mhìos mu dheireadh mus tèid an leigeil ma sgaoil, bidh am meur aig ìre an tagraiche fuasglaidh, far an tèid an seasmhachd mu dheireadh a dhèanamh.

Am measg nan air a chur ris innleachdan ann am Python 3.9:

  • Ann am faclairean air am mìneachadh a’ cleachdadh a’ chlas dict togte, nochdadh taic do ghnìomhaichean co-aonaidh "|" agus "|=" ùrachaidhean, a chuireas ris na modhan {**d1, **d2} agus dict.update a chaidh a mholadh roimhe airson faclairean a chur còmhla.

    >>> x = { "key1": "luach 1 bho x", "key2": "luach2 bho x"}
    >>> y = { "key2": "luach2 bho y", "key3": "luach3 bho y"}

    >>> x | y
    {'key1': 'luach 1 bho x', 'key2': 'luach2 bho y', 'key3': 'luach3 bho y'}

    >>> y | x
    {'key2': 'luach2 bho x', 'key3': 'luach3 bho y', 'key1': 'luach1 bho x'}

  • Tha an cruinneachadh de sheòrsan togte a’ toirt a-steach liosta, dict, agus tuple, a ghabhas cleachdadh mar sheòrsan bunaiteach gun a bhith air an toirt a-steach bhon mhodal clò-sgrìobhaidh. An fheadhainn sin. an àite typing.List, typing.Dict agus typing.Tuple faodaidh tu a-nis a shònrachadh
    dìreach liosta, dict agus tuple:

    def greet_all (ainmean: liosta[str]) -> Chan eil gin:
    airson ainm ann an ainmean:
    clò ("Hello", ainm)

  • Air a thoirt seachad innealan sùbailte airson gnìomhan agus caochladairean a chomharrachadh. Airson notaichean a cheangal, chaidh seòrsa ùr le notaichean a chur ris a’ mhodal clò-sgrìobhaidh, a’ leudachadh na seòrsaichean a th’ ann mar-thà le meata-dàta a bharrachd a ghabhas cleachdadh airson mion-sgrùdadh statach no airson optimizations ùine-ruith. Gus faighinn gu meata-dàta bhon chòd, chaidh am paramadair include_extras a chur ris a’ mhodh typing.get_type_hints().

    charType = Le notaichean[int, ctype (“char”)] UnsignedShort = Le notaichean[int, struct2.ctype(’H’)]

  • Toned sìos riatanasan gràmair airson luchd-sgeadachaidh - abairt sam bith a tha iomchaidh airson a chleachdadh ma tha agus fhad ‘s as urrainnear blocaichean a chleachdadh mar sgeadachadh a-nis. Rinn an t-atharrachadh leasachadh mòr air leughadh a’ chòd PyQt5 agus rinn e nas sìmplidhe cumail suas a’ mhodal seo:

    Bha:
    button_0 = putanan[0] @button_0.clicked.connect

    A-nis faodaidh tu sgrìobhadh:
    @buttons[0].cliog.connect

  • Gu leabharlann àbhaisteach air a chur ris modal sòn-fhiosrachadh, anns a bheil fiosrachadh bho stòr-dàta sòn ùine IANA.

    >>> bho zoneinfo in-mhalairt ZoneInfo
    >>> bho cheann-latha in-mhalairt datetime, timedelta
    >>> # Àm an t-samhraidh
    >>> dt = ceann-latha (2020, 10, 31, 12, tzinfo = ZoneInfo ("America/Los_Angeles"))
    >>> clò-bhualadh(dt)
    2020-10-31 12:00:00-07:00

    >>> dt.tzname()
    'PDT'

    >>> # Àm àbhaisteach
    >>> dt + = timedelta (làithean = 7)
    >>> clò-bhualadh(dt)
    2020-11-07 12:00:00-08:00

    >>> clò-bhualadh(dt.tzname())
    PST

  • Modal graphlib air a chur ris, anns a bheil air a chur an gnìomh taic do sheòrsachadh topological ghrafaichean.
  • Air a mholadh dòighean ùra airson ro-leasachain agus crìochnachaidhean loidhne a thoirt air falbh - str.removeprefix (ro-leasachan) agus str.removesuffix (iar-leasachan). Tha dòighean air an cur ri str, bytes, bytearray agus collections.UserString objects.

    >>> s = "FooBar"
    >>> s.removeprefix("Foo")
    'bàr'

  • An sàs parser ùr PEG (Parsing Expression Grammar), a ghabh àite am parser LL(1). Le bhith a’ cleachdadh a’ pharsair ùr bha e comasach faighinn cuidhteas cuid de na “hacks” a chaidh a chleachdadh gus faighinn seachad air na cuingeadan ann an LL(1), agus lughdaich e gu mòr na cosgaisean obrach airson am parser a chumail suas. A thaobh coileanadh, tha am parser ùr timcheall air an aon ìre ris an fhear roimhe, ach tha e gu math air thoiseach air a thaobh sùbailteachd, a leigeas leat a bhith a’ faireachdainn nas saor nuair a bhios tu a’ dealbhadh feartan cànain ùra. Tha an seann chòd parser air a ghleidheadh ​​​​an-dràsta agus faodar a thilleadh leis a’ bhratach “-X oldparser” no caochladair àrainneachd “PYTHONOLDPARSER=1”, ach thèid a thoirt air falbh ann am brath 3.10.
  • Air a thoirt seachad an comas airson dòighean leudachaidh C faighinn gu staid nam modalan anns a bheil iad air am mìneachadh le bhith a’ cleachdadh lorg puing dìreach an àite a bhith a’ lorg staid a’ mhodal a’ cleachdadh an gnìomh PyState_FindModule. Leigidh an t-atharrachadh leat coileanadh mhodalan C a mheudachadh le bhith a’ lughdachadh no a’ cuir às gu tur an còrr de bhith a’ sgrùdadh staid a’ mhodal. Gus modal a cheangal ri clas, thathas a’ moladh an gnìomh C-PyType_FromModuleAndSpec(), gus am modal agus a staid fhaighinn, thathas a’ moladh na gnìomhan C-PyType_GetModule() agus PyType_GetModuleState(), agus gus dòigh a sholarachadh le cothrom air a’ chlas anns a bheil e air a mhìneachadh, thathas a’ moladh am PyCMethod C-function agus am bratach METH_METHOD. .
  • Neach-cruinneachaidh sgudail air a lìbhrigeadh bho bhith a’ glasadh chruinneachaidhean anns a bheil stuthan ath-bheothaichte a tha fhathast ruigsinneach bhon taobh a-muigh às deidh don chuairt dheireannach ruith.
  • Modh air a chur ris os.pidfd_fosgail, a leigeas le fo-shiostam kernel Linux “pidfd” a chleachdadh gus suidheachadh ath-chleachdadh PID a làimhseachadh (tha pidfd co-cheangailte ri pròiseas sònraichte agus chan eil e ag atharrachadh, fhad ‘s a dh’ fhaodas PID a bhith co-cheangailte ri pròiseas eile às deidh don phròiseas gnàthach co-cheangailte ris an PID sin tighinn gu crìch ).
  • Chaidh taic airson sònrachadh Unicode ùrachadh gu dreach 13.0.0.
  • Cur às aoidion cuimhne nuair a bhios tu ag ath-thòiseachadh an eadar-theangair Python san aon phròiseas.
  • Chaidh coileanadh an raon seòrsaichean togte, tuple, set, frostset, list and dict a bharrachadh. air a chur an gnìomh tro bhith a’ cleachdadh protocol ath-ghoirid Vectorcall airson ruigsinneachd nas luaithe air nithean a tha sgrìobhte sa chànan C.
  • Chaidh na modalan _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, gnìomhaiche, goireas, ùine agus _weakref a ghluasad gu luchdachadh o tòiseachaidh ann an grunn ìrean.
  • Chaidh na modalan leabharlainn àbhaisteach audioop, ast, grp, _hashlib, pwd, _posixsubprocess, air thuaiream, tagh, structar, termios agus zlib atharrachadh gu cleachdadh cuibhrichte ABI seasmhach, a dh’ fhuasglas an duilgheadas a thaobh comas obrachaidh co-chruinneachaidhean de mhodalan leudachaidh airson diofar dhreachan de Python (nuair a bhios tu ag ùrachadh an dreach, chan eil feum air modalan leudachaidh ath-thogail, agus bidh e comasach do mhodalan a chaidh a chur ri chèile airson 3.9 obrachadh ann am meur 3.10).
  • Tha am modal asyncio air taic a thoirt don pharameter reuse_address mar thoradh air cùisean tèarainteachd a dh’ fhaodadh a bhith ann (le bhith a’ cleachdadh SO_REUSEADDR airson UDP air Linux leigidh sin diofar phròiseasan gus socaidean èisteachd a cheangal ri port UDP).
  • Chaidh optimizations ùra a chur ris, mar eisimpleir, coileanadh nas fheàrr de luchd-làimhseachaidh chomharran ann an tagraidhean ioma-snàithlean, astar nas luaithe den mhodal fo-phròiseas ann an àrainneachd FreeBSD, agus sònrachadh caochladairean sealach nas luaithe (a’ sònrachadh caochladair san abairt “airson y in [expr ]” a-nis cho gnìomhach ris an abairt “y = expr”). San fharsaingeachd, a 'mhòr-chuid de dheuchainnean taisbeanadh lùghdachadh coileanaidh an coimeas ri meur 3.8 (chan fhaicear astar luath ach anns na deuchainnean write_local agus write_deque):

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

    Ruigsinneachd leughaidh caochlaideach is buadhach:
    read_local 7.1 7.1 5.4 5.1 3.9 4.0
    read_neo-ionadail 7.1 8.1 5.8 5.4 4.4 4.8
    leugh_ cruinne 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
    leugh_classvar_from_class 25.6 26.5 20.7 19.5 18.4 18.6
    leugh_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_sliotan 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_boundmodh 37.6 37.9 29.6 26.9 27.7 45.9

    Cothrom sgrìobhaidh caochlaideach is buadhan:
    write_local 8.7 9.3 5.5 5.3 4.3 4.2
    write_neo-ionadail 10.5 11.1 5.6 5.5 4.7 4.9
    sgrìobhadh_ cruinne 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_sliotan 35.6 36.1 27.3 26.6 25.7 27.7

    Structar dàta a’ leughadh ruigsinneachd:
    read_list 24.2 24.5 20.8 20.8 19.0 21.1
    leughadh_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

    Structar dàta sgrìobhadh ruigsinneachd:
    write_list 27.1 28.5 22.5 21.6 20.0 21.6
    sgrìobhadh_deque 28.7 30.1 22.7 21.8 23.5 23.2
    write_dict 31.4 33.3 29.3 29.2 24.7 27.8
    write_strdict 28.4 29.9 27.5 25.2 23.1 29.8

    Obraichean stac (no ciudha):
    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

    Cearcall ùine:
    loop_overhead 0.5 0.6 0.4 0.3 0.3 0.3

  • Air a sguabadh às mòran de ghnìomhan agus dhòighean Python 2.7 a bha air an ìsleachadh roimhe seo agus a lean gu Rabhadh Ìsleachadh san fhoillseachadh roimhe, a’ toirt a-steach an dòigh unescape () ann an 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() agus base64.decodestring().

Source: fosgailtenet.ru

Cuir beachd ann