Kuburitswa kwePython 3.9 programming mutauro

Mushure megore rebudiriro yakaunzwa kuburitswa kwemutauro wakakosha Python 3.9. Python 3.9 yaive yekutanga kuburitswa mushure shanduko chirongwa pa kutenderera kutsva kugadzirira uye kutsigirwa kwekuburitswa. Zvitsva zvitsva zvinoburitswa zvino kugadzirwa kamwe pagore, uye zvigadziriso zvekugadzirisa zvichaburitswa mwedzi miviri yega yega. Bazi rimwe nerimwe rinokosha richatsigirwa kwegore rimwe nehafu, pashure pacho mamwe makore matatu nehafu richagadziridzwa kuti rigadzirise kusasimba.

Basa pabazu idzva zvino rinotanga mwedzi mishanu pamberi pokubudiswa kwebazu rinotevera, i.e. ichienderana nekuburitswa kwePython 3.9 akatanga alpha kuyedzwa kwePython 3.10 bazi. Iyo Python 3.10 bazi richange riri mukuburitswa kwealpha kwemwedzi minomwe, panguva iyo maficha matsva achawedzerwa uye tsikidzi dzakagadziriswa. Mushure meizvi, beta vhezheni dzichayedzwa kwemwedzi mitatu, panguva iyo kuwedzera maficha kucharambidzwa uye kutariswa kwese kuchabhadharwa kugadzirisa tsikidzi. Mwedzi miviri yekupedzisira kusunungurwa kusati kwaitwa, bazi richange riri padanho revanoda kusunungurwa, uye panozogadziriswazve.

Pakati pe akawedzera zvitsva muPython 3.9:

  • Mumaduramazwi anotsanangurwa uchishandisa yakavakirwa-mukati dict kirasi, akaonekwa rutsigiro rwekubatanidza vashandisi "|" uye "|=" zvigadziriso, zvinoenderana ne{**d1, **d2} uye dict.update nzira dzakambotaurwa dzekubatanidza maduramazwi.

    >>> x = {"kiyi1": "kukosha1 kubva kux", "kiyi2": "kukosha2 kubva kux"}
    >>> y = {"kiyi2": "kukosha2 kubva pay", "kiyi3": "kukosha3 kubva pay"}

    >>> x | y
    {'kiyi1': 'kukosha1 kubva kux', 'kiyi2': 'kukosha2 kubva kuna y', 'kiyi3': 'kukosha3 kubva pay'}

    >>> y | x
    {'kiyi2': 'kukosha2 kubva kux', 'kiyi3': 'kukosha3 kubva kuna y', 'kiyi1': 'kukosha1 kubva kux'}

  • Iyo yakavakirwa-mukati muunganidzwa wemhando inosanganisira rondedzero, dict, uye tuple, iyo inogona kushandiswa semhando dzepasi pasina kuunza kubva kune yekutaipa module. Avo. pane kutaipa.List, typing.Dict and typing.Tuple you can now specific
    ingo nyora, dict uye tuple:

    def greet_all(mazita: list[str]) -> Hapana:
    kune zita mumazita:
    print("Mhoro", zita)

  • Anopiwa maturusi anochinjika eanonotating mabasa uye zvinosiyana. Kubatanidza zvirevo, rudzi rutsva rweAnnotated rwakawedzerwa kumodule yekutaipa, ichiwedzera mhando dziripo nekuwedzera metadata inogona kushandiswa pakuongorora kwakamira kana kumhanyisa-nguva optimizations. Kuti uwane metadata kubva kukodhi, iyo include_extras parameter yawedzerwa kune iyo typing.get_type_hints() nzira.

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

  • Toned pasi girama inodiwa kune vanoshongedza - chero kutaura kwakakodzera kushandiswa mukati kana uye nepo mabhuroko ave kugona kushandiswa seanoshongedza. Shanduko iyi yakavandudza zvakanyanya kuverenga kweiyo PyQt5 kodhi uye kurerutsa kuchengetedza kweiyi module:

    Waive:
    button_0 = mabhatani[0] @button_0.clicked.connect

    Iye zvino unogona kunyora:
    @mabhatani[0].clicked.connect

  • Kuraibhurari yakajairika akawedzera module macommunaute, iyo inosanganisira ruzivo kubva kuIANA time zone database.

    >>> kubva zoneinfo import ZoneInfo
    >>> kubva datetime kupinza datetime, timedelta
    >>> # Nguva yezhizha
    >>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
    >>> dhinda (dt)
    2020-10-31 12:00:00-07:00

    >>> dt.tzname()
    'PDT'

    >>> # Yakajairwa nguva
    >>> dt += timedelta(mazuva=7)
    >>> dhinda (dt)
    2020-11-07 12:00:00-08:00

    >>> dhinda(dt.tzname())
    PST

  • Yakawedzera graphlib module, umo itwa tsigiro yekurongwa kwetopological yemagrafu.
  • Proposed nzira itsva dzekubvisa prefixes uye magumo emutsara - str.removeprefix(prefix) uye str.removesuffix(suffix). Nzira dzakawedzerwa kune str, byte, bytearray uye kuunganidza.UserString zvinhu.

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

  • Inobatanidzwa new parser PEG (Parsing Expression Grammar), iyo yakatsiva iyo parser LL(1). Iko kushandiswa kweiyo parser nyowani kwakaita kuti zvibvire kubvisa mamwe e "hacks" anoshandiswa kunzvenga zvirambidzo muLL (1), uye zvakanyanya kudzikisa mutengo wevashandi kuchengetedza parser. Panyaya yekuita, iyo nyowani parser inenge iri padanho rakafanana nerekare, asi iri pamberi payo zvakanyanya maererano nekushanduka-shanduka, izvo zvinokutendera kuti unzwe wakasununguka kana uchigadzira mitsva yemitauro. Iyo yekare parser kodhi inochengetwa parizvino uye inogona kudzoserwa uchishandisa "-X oldparser" mureza kana "PYTHONOLDPARSER=1" nharaunda inosiyana, asi ichabviswa mukuburitswa 3.10.
  • Provided kukwanisa kweC nzira dzekuwedzera kuwana mamiriro emamodules ayo anotsanangurwa achishandisa zvakananga pointer dereference pane kutsvaga mamiriro emodule uchishandisa PyState_FindModule basa. Shanduko inokubvumira kuti uwedzere kuita kweC modules nekudzikisa kana kubvisa zvachose iyo yepamusoro yekutarisa mamiriro emodule. Kuti ubatanidze module nekirasi, iyo C-function PyType_FromModuleAndSpec() inorongwa, kuti iwane module nenzvimbo yayo, C-functions PyType_GetModule() nePyType_GetModuleState() inotsanangurwa, uye kupa nzira yekuwana kirasi. umo inotsanangurwa, iyo C-function PyCMethod uye METH_METHOD mureza zvinotsanangurwa.
  • Muunganidzi wemarara delivered kubva pakuvhara miunganidzwa ine zvinhu zvakadzokororwa zvinoramba zvichiwanikwa kunze mushure mekupera kwekuita.
  • Yakawedzerwa nzira os.pidfd_open, iyo inobvumira iyo Linux kernel subsystem "pidfd" kuti ishandiswe kubata iyo PID yekushandisazve mamiriro (pidfd inosanganiswa neimwe nzira uye haishanduke, nepo PID inogona kubatanidzwa neimwe nzira mushure mekuita kwazvino kwakabatana neiyo PID kuguma. )
  • Unicode tsanangudzo yetsigiro yakagadziridzwa kune vhezheni 13.0.0.
  • Yakabviswa ndangariro leak kana uchitangazve muturikiri wePython nenzira imwecheteyo.
  • Kuita kweakavakirwa-mukati mhando mhando, tuple, set, frozenset, rondedzero uye dict yakagadziridzwa. itwa kuburikidza nekushandiswa kweVectorcall shortcut protocol yekukurumidza kuwana zvinhu zvakanyorwa mumutauro weC.
  • Iyo _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, opareta, sosi, nguva uye _weakref modules zvakatamiswa pakurodha kubva. kutanga mumatanho akati wandei.
  • Iyo yakajairwa raibhurari modules audioop, ast, grp, _hashlib, pwd, _posixsubprocess, zvisingaite, sarudza, struct, termios uye zlib zvakashandurwa kuti zvishandiswe zvinorambidzwa. yakagadzikana ABI, iyo inogadzirisa dambudziko rekushanda kwemagungano ekuwedzera ma modules emhando dzakasiyana dzePython (painovandudza shanduro, hapana chikonzero chekuvakazve ma modules ekuwedzera, uye ma modules akagadzirirwa 3.9 achakwanisa kushanda mubazi re 3.10).
  • Iyo asyncio module yarasa rutsigiro rwereuse_address parameter nekuda kwezvingangoita nyaya dzekuchengetedza (uchishandisa SO_REUSEADDR yeUDP paLinux inobvumira maitiro akasiyana kubatanidza zvigadziko zvekuteerera kune UDP port).
  • Magadzirirwo matsva akawedzerwa, semuenzaniso, yakagadziridzwa mashandiro evanobata masaini mune akawanda-treaded application, yakawedzera kumhanya kweiyo subprocess module muFreeBSD nharaunda, uye nekukurumidza kugoverwa kwechinguvana kusiyanisa (kugovera shanduko mukutaura "for y in [expr. ]” yava kuita sekutaura kwekuti β€œy = expr” "). Kazhinji, miedzo yakawanda ratidza kuderera kwekuita zvichienzaniswa nebazi 3.8 (kukurumidza kunoonekwa chete mukunyora_yenzvimbo uye kunyora_deque bvunzo):

    Python version 3.4 3.5 3.6 3.7 3.8 3.9
    β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

    Variable uye hunhu kuverenga kuwana:
    verenga_yemunharaunda 7.1 7.1 5.4 5.1 3.9 4.0
    verenga_isiri munharaunda 7.1 8.1 5.8 5.4 4.4 4.8
    verenga_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

    Variable uye hunhu kunyora kuwana:
    kunyora_zvemunharaunda 8.7 9.3 5.5 5.3 4.3 4.2
    kunyora_kusiri munharaunda 10.5 11.1 5.6 5.5 4.7 4.9
    kunyora_pasi rose 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

    Kuwanika kwekuverenga chimiro chedata:
    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

    Kuwanikwa kwekunyora kwedhita:
    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
    kunyora_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

    Stack (kana mutsara) mashandiro:
    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

    Nguva yekufamba:
    loop_overhead 0.5 0.6 0.4 0.3 0.3 0.3

  • Yakabviswa akawanda Python 2.7 mabasa uye nzira dzakamboregwa uye zvakakonzera DeprecationWarning mukuburitswa kwapfuura, kusanganisira unescape() nzira muhtml.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() uye base64.decodestring().

Source: opennet.ru

Voeg