Kuburitswa kwePython 3.10 programming mutauro

Mushure megore rekusimudzira, kuburitswa kwakakosha kwePython 3.10 programming mutauro kunoratidzwa. Bazi idzva richatsigirwa kwegore nehafu, mushure memamwe makore matatu nehafu, zvigadziriso zvichagadzirwa kuti zvibvise kusasimba.

Panguva imwecheteyo, kuongororwa kwealpha kwebazi rePython 3.11 kwakatanga (maererano nehurongwa hutsva hwekuvandudza, kushanda pabazi idzva kunotanga mwedzi mishanu isati yaburitswa bazi rapfuura uye rinosvika padanho rekuyedza alpha panguva yekuburitswa kunotevera. ) Iyo Python 3.11 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. Kwemwedzi miviri yokupedzisira kusunungurwa kusati kwaitwa, bazi richange riri padanho revanoda kusunungurwa, uye panozogadziriswazve.

Nyowani yekuwedzera kuPython 3.10 inosanganisira:

  • Yakamisikidzwa "match" uye "kesi" vashandisi vepateni yekufananidza, iyo inovandudza kuverenga kwekodhi, kurerutsa kuenzanirana kwezvinhu zvePython zvisina tsarukano, uye kuwedzera kuvimbika kwekodhi kuburikidza nepamusoro static mhando yekutarisa. Kuitwa kwacho kwakafanana ne "match" opareta yakapihwa muScala, Rust, uye F #, iyo inofananidza mhedzisiro yekutaura kwakatemwa nerondedzero yemapateni akanyorwa mumabhuroko akavakirwa pane "kesi" anoshanda.

    def http_error(status): match status: case 400: dzosera “Bad request” case 401|403|404: return “Hazvibvumirwe” case 418: return “Ndiri teapot” case _: return “Chimwe chinhu”

    Iwe unogona kuburitsa zvinhu, tuples, rondedzero, uye zvisina tsarukano sequences kuti usunge zvinosiyana zvichienderana nehunhu huripo. Inobvumirwa kutsanangura ma templates anested, shandisa mamwe mamiriro e "kana" mu template, shandisa masks ("[x, y, *zorora]"), key/value mappings (semuenzaniso, {"bandwidth": b, "latency). ”: l} kuburitsa "bandwidth" uye "latency" kukosha kubva muduramazwi), bvisa matemplate madiki (":=" mushandisi), shandisa ine mazita anogara ari mutemplate. Mumakirasi, zvinokwanisika kugadzirisa maitiro ekufananidza uchishandisa "__match__ ()" nzira.

    kubva ku dataclasses import dataclass @dataclass class Point: x: int y: int def whereis(point): match point: case Point(0, 0): print("Origin") case Point(0, y): print(f" Y={y}") nyaya Poindi(x, 0): dhinda(f"X={x}") nyaya Pfungwa(): dhinda("Kumwe kunhu") nyaya _: dhinda("Hapana kana poindi") mechi poindi: nyaya Point(x, y) kana x == y: dhinda(f"Y=X pa {x}") nyaya Point(x,y): dhinda(f"Kwete padiagonal") RED, GREEN, BLUE = 0, 1, 2 mechi yeruvara: kesi RED: dhinda(“Ndiri kuona dzvuku!”) kesi GREEN: dhinda(“Uswa hwakasvibira”) kesi BLUE: dhinda(“Ndiri kunzwa bhururu :(“)

  • Izvozvi zvinogoneka kushandisa maparentheses muine chirevo kupatsanura tsananguro yemuunganidzwa wemaneja echinyorwa mumitsetse yakawanda. Inotenderwawo kusiya koma mushure memaneja wekupedzisira muboka: ne ( CtxManager1() semuenzaniso1, CtxManager2() semuenzaniso2, CtxManager3() semuenzaniso3, ): ...
  • Kuvandudzwa kwekuzivisa kwekodhi nzvimbo yezvikanganiso zvine chekuita nemabhureki asina kuvharwa uye makotesheni mutambo literals. Semuenzaniso, kana paine brace isina kuvharwa, pachinzvimbo chekutaura chikanganiso chesyntax mukuvaka kunotevera, chinongedzo chave kuratidza bhurashi yekuvhura uye inoratidza kuti hapana kuvhara. Faira "example.py", mutsetse wekutanga unotarisirwa = {1:9, 1:18, 2:19, 2:27, 3:28, 3:29, 3:36, 4:37, ^SyntaxError: '{' haina kumbovharwa

    Yakawedzera mamwe mameseji akashongedzerwa ekukanganisa mameseji: ":" chiratidzo pamberi pebhuroko uye mumaduramazwi, kwete kupatsanura tuple nemaparentheses, kushaya koma muzvinyorwa, ichitsanangura "edza" block isina "kunze" uye "pekupedzisira", uchishandisa "= " pachinzvimbo che "= =" mukuenzanisa, kutsanangura * -mataurirwo mu f-tambo. Pamusoro pezvo, inova nechokwadi chekuti chirevo chese chinonetsa chinoratidzwa, kwete kutanga chete, uye neruzivo rwakajeka nezve mamiriro ekukanganisa ane chekuita neiyo indentation isiriyo. >>> def foo(): ... kana lel: ... x = 2 Faira " ", mutsetse 3 x = 2 ^ IndentationError: inotarisirwa chivharo chakadzikiswa mushure me 'kana' chirevo mumutsetse 2

    Mukukanganisa kunokonzerwa nemataipa mumazita ehunhu uye mazita akasiyana mune basa, kurudziro ine zita chairo inobuda. >>>collections.namedtoplo Traceback (yakanyanya kufona yekupedzisira): Faira « ", mutsetse 1, mukati AttributeError: module 'collections' haina hunhu 'namedtoplo'. Wanga uchireva here kuti: namedtuple?

  • Kune maturusi ekugadzirisa uye maprofile, zviitiko zvekutevera zvinopihwa iwo chaiwo mutsara manhamba eakatemerwa kodhi.
  • Yakawedzerwa sys.flags.warn_default_encoding setting kuratidza yambiro pamusoro pezvingango kanganisa zvine chekuita neTextIOWrapper uye yakavhurika() kugadzirisa UTF-8 encoded mafaera pasina kutsanangura zvakajeka iyo 'encoding=»utf-8″' sarudzo (ASCII encoding inoshandiswa nekusingaperi). Kuburitswa kutsva kunopawo kugona kudoma 'encoding="locale"' kukosha kuseta encoding zvichienderana nenzvimbo yazvino.
  • Mushandi mutsva awedzerwa kumodule yekutaipa, iyo inopa maturusi ekutsanangudza mhando zvirevo, zvichibvumira kushandiswa kweiyo syntax "X | Y" kusarudza imwe yemhando (X mhando kana Y mhando). def square(nhamba: int | float) -> int | float: nhamba yekudzoka ** 2 yakaenzana neyakambotsigirwa kuvaka: def square(nhamba: Union[int, float]) -> Union[int, float]: nhamba yekudzoka ** 2
  • Iyo Concatenate opareta uye iyo ParamSpec shanduko yakawedzerwa kune yekunyora module, iyo inokutendera kuti upfuure rumwe ruzivo rwekutarisa static mhando kana uchishandisa Callable. Iyo typing module inowedzera akakosha kukosha TypeGuard kutsanangudza mhando yekudzivirira mabasa uye TypeAlias ​​​​kutsanangura zvakajeka rudzi alias. StrCache: TypeAlias ​​= 'Cache[str]' # mhando alias
  • Zip () basa rinoshandisa sarudzo "yakasimba" mureza, iyo, kana yatsanangurwa, inotarisa kana nharo dziri kudzokororwa dzakafanana kureba. >>> list(zip(('a', 'b', 'c'), (1, 2, 3), yakasimba=Chokwadi)) [('a', 1), ('b', 2) , ('c', 3)] >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=Chokwadi)) Traceback (yachangopfuura kufona ): … ValueError: zip() nharo 2 yakareba kudarika nharo 1
  • Mitsva yakavakirwa-mukati mabasa aiter () uye anext () inokurudzirwa nekuitwa kweasynchronous analogues kumabasa iter () uye inotevera ().
  • Basa re str (), bytes () uye bytearray () vavaki kana vachishanda nezvinhu zviduku rave richikurumidzira ne 30-40%.
  • Yakadzikisa huwandu hwemabasa ekunze mune runpy module. Murairo we "python3 -m module_name" ikozvino unomhanya paavhareji 1.4 nguva nekukurumidza nekuda kwekudzikiswa kwemamodule anotengeswa kunze kwenyika kubva pa69 kusvika pa51.
  • Murairo weLOAD_ATTR unoshandisa caching mechanism yemaopcode ega ega, izvo zvakaita kuti ikurumidze kukurumidza kushanda neanowanzo hunhu nekusvika 36%, uye ine slots inosvika 44%.
  • Kana uchivaka Python ne "--enable-optimizations" sarudzo, iyo "-fno-semantic-interposition" modhi yave kugoneswa, iyo inobvumira kukurumidzira muturikiri neanosvika makumi matatu muzana kana zvichienzaniswa nekuvaka ne "--gonesa-yakagoverwa. ” sarudzo.
  • Iwo hahlib uye ssl modules akawedzera rutsigiro rweOpenSSL 3.0.0 uye akamira kutsigira OpenSSL shanduro dzekare kupfuura 1.1.1.
  • Iyo yekare parser yakabviswa, iyo yakatsiviwa mubazi rekare nePEG (Parsing Expression Grammar) parser. Iyo fomati module yabviswa. Iyo loop parameter yabviswa paasyncio API. Nzira dzakamborambwa dzabviswa. Py_UNICODE_str* mabasa anonyengedza Py_UNICODE* tambo abviswa.
  • Iyo distutils module yakaderedzwa uye yakarongerwa kubviswa muPython 3.12. Panzvimbo ye distutils, zvinokurudzirwa kushandisa setuptools, kurongedza, chikuva, shutil, subprocess uye sysconfig modules. Iyo wstr chimiro muPyUnicodeObject yakaderedzwa uye yakarongerwa kubviswa.

Source: opennet.ru

Voeg