Famoahana ny fiteny fandaharana Python 3.11

Taorian'ny taonan'ny fampandrosoana dia navoaka ny famoahana lehibe ny fiteny fandaharana Python 3.11. Ny sampana vaovao dia hotohanana mandritra ny iray taona sy tapany, ary aorian'izay mandritra ny telo taona sy tapany dia hisy fanamboarana ho azy mba hanafoanana ny vulnerability.

Nandritra izany fotoana izany, nanomboka ny fitsapana alpha ny sampana Python 3.12 (araka ny fandaharam-pampandrosoana vaovao, ny asa amin'ny sampana vaovao dia manomboka dimy volana alohan'ny famoahana ny sampana teo aloha ary tonga amin'ny dingana fitsapana alpha amin'ny fotoana famoahana manaraka. ). Ny sampana Python 3.12 dia hivoaka amin'ny alfa mandritra ny fito volana, izay hampidirana endri-javatra vaovao ary hapetraka ny bug. Aorian'izany dia hozahan-toetra mandritra ny telo volana ny dikan-teny beta, izay mandrara ny fampidirana endri-javatra vaovao ary hojerena amin'ny fanamboarana ny bug. Nandritra ny roa volana farany talohan'ny famoahana, ny sampana dia ho eo amin'ny sehatry ny kandidΓ  famotsorana, izay hanatanterahana ny fanamafisana farany.

Ny fanampiana vaovao amin'ny Python 3.11 dia ahitana:

  • Nisy asa lehibe natao mba hanatsarana ny fahombiazany. Ny sampana vaovao dia ahitana ny fanovana mifandraika amin'ny fanafainganana sy ny fametrahana an-tserasera ny antso an-tariby, ny fampiasana mpandika teny haingana amin'ny asa mahazatra (x+x, x*x, xx, a[i], a[i] = z, f(arg) C( arg), o.method(), o.attr = z, *seq), ary koa ny fanatsarana nomanin'ny tetikasa Cinder sy HotPy. Miankina amin'ny karazana entana, misy ny fitomboan'ny hafainganam-pandehan'ny code 10-60%. Amin'ny ankapobeny, nitombo 25% ny fahombiazan'ny test suite pyperformance.

    Nohavaozina ny rafitra caching bytecode, izay nampihena 10-15% ny fotoana fanombohan'ny mpandika teny. Ny zavatra misy code sy bytecode dia atolotry ny mpandika teny amin'izao fotoana izao, izay nahafahana nanafoana ny dingan'ny unmarshalling bytecode nalaina avy tao amin'ny cache ary manova zavatra miaraka amin'ny code mba hapetraka ao anaty fitadidiana mavitrika.

  • Rehefa mampiseho soritra antso amin'ny hafatra diagnostika, dia azo atao izao ny mampiseho fampahalalana momba ny fitenenana nahatonga ny hadisoana (teo aloha, ny tsipika ihany no nasongadina nefa tsy nanazava ny ampahany amin'ny tsipika nahatonga ny fahadisoana). Azo alaina amin'ny alalan'ny API ihany koa ny fampahalalana momba ny trace ary ampiasaina amin'ny sarintany ny toromarika bytecode tsirairay mankany amin'ny toerana manokana ao amin'ny kaody loharano mampiasa ny fomba codeobject.co_positions() na ny fiasa C API PyCode_Addr2Location(). Ny fanovana dia manamora kokoa ny debug ny olana amin'ny zavatra rakibolana misy akany, fiantsoana asa maro, ary fomba fiteny arithmetika sarotra. Traceback (antso farany farany): File "calculation.py", andalana 54, in result = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: fizarana aotra
  • Fanampiana fanampiny ho an'ny vondrona miavaka, manome ny programa ny fahafahana mamorona sy manodina ny maningana maro samihafa indray mandeha. Mba hanangonana fanavahana maro sy hampiakarana azy ireo, dia natolotra ny karazana exception vaovao ExceptionGroup sy BaseExceptionGroup, ary nampiana ny teny hoe β€œafa-tsy*” mba hanasongadinana ny fanavahana tsirairay avy amin'ny vondrona iray.
  • Ny fomba add_note() dia nampiana tao amin'ny kilasy BaseException, mamela anao hametraka naoty an-tsoratra amin'ny exception, ohatra, manampy fampahalalana momba ny contextual izay tsy misy rehefa atsipy ny exception.
  • Nampiana karazana Self manokana hanehoana ny kilasy tsy miankina amin'izao fotoana izao. Ny tena dia azo ampiasaina hanoratana fomba izay mamerina ohatra iray amin'ny kilasiny amin'ny fomba tsotra kokoa noho ny fampiasana TypeVar. class MyLock: def __enter__(self) -> Self: self.lock() return self
  • Nampiana karazana LiteralString manokana izay tsy misy afa-tsy tady litera mifanaraka amin'ny karazana LiteralString (izany hoe tady miboridana sy LiteralString, fa tsy tady str arbitre na mitambatra). Ny karazana LiteralString dia azo ampiasaina hamerana ny fandalovan'ny tohan-kevitra amin'ny fonctionnaire, fanoloana tsy ara-dalΓ na ny ampahany amin'ny tady izay mety hitarika ho amin'ny vulnerabilities, ohatra, rehefa mamorona tady ho an'ny fangatahana SQL na baiko shell. def run_query(sql: LiteralString) -> ... ... def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> Tsy misy: run_query("MIFIDY * AVY amin'ny mpianatra") # ok run_query(literal_string) # ok run_query("SIFIDY * AVY" + literal_string) # ok run_query(arbitrary_string) # Error run_query(# Error f" SELECT * AVY AMIN'NY mpianatra WHERE anarana = {arbitrary_string}")
  • Ny karazana TypeVarTuple dia nampiana, mamela ny fampiasana generics miovaova, tsy mitovy amin'ny TypeVar, izay tsy mandrakotra karazana iray, fa isan-karazany.
  • Ny tranomboky mahazatra dia misy ny maody tomllib miaraka amin'ny fiasa amin'ny fanapariahana ny endrika TOML.
  • Azo atao ny manisy marika ny singa tsirairay amin'ny rakibolana voatendry (TypedDict) miaraka amin'ny marika Required sy NotRequired mba hamaritana ny saha ilaina sy azo atao (amin'ny alΓ lan'ny default dia ilaina ny saha rehetra nambara raha tsy apetraka amin'ny Diso ny fitambaran'ny parameter). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # OK (tsy voatery ny sahan'ny taona) m3: Sarimihetsika = {β€œtaona”: 2022} # Error, tsy feno ny saha lohateny ilaina)
  • Ny kilasin'ny TaskGroup dia nampidirina ao amin'ny module asyncio miaraka amin'ny fampiharana mpitantana contexte asynchronous izay miandry andiana asa ho vita. Ny fampidirana asa amin'ny vondrona dia atao amin'ny fampiasana ny fomba create_task(). async def main(): async miaraka amin'ny asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("Vita izao ny asa roa tonta .")
  • Nampiana @dataclass_transform decorator ho an'ny kilasy, fomba ary fiasa, rehefa voatondro, ny rafitra fanamarinana karazana static dia mitondra ilay zavatra toy ny mampiasa ny @dataclasses.dataclass decorator. Ao amin'ny ohatra etsy ambany, ny kilasy CustomerModel, rehefa manamarina karazana, dia hokarakaraina mitovy amin'ny kilasy misy ny @dataclasses.dataclass decorator, i.e. toy ny manana fomba __init__ izay manaiky id sy anarana variables. @dataclass_transform() class ModelBase: ... class CustomerModel(ModelBase): id: int anarana: str
  • Amin'ny fomba fiteny mahazatra, dia nampiana ny fahaizana mampiasa ny vondrona atomika ((?>...)) sy ny fandrefesana manana (*+, ++, ?+, {m,n}+).
  • Nampiana safidy andalana baiko "-P" sy ny fari-piainan'ny tontolo iainana PYTHONSAFEPATH mba hanesorana ny fametahana mandeha ho azy amin'ireo lalana mety tsy azo antoka amin'ny sys.path.
  • Ny fampiasa py.exe ho an'ny sehatra Windows dia nohatsaraina be, nanampy ny fanohanana ny "-V:" syntax. / " ankoatry ny "- . "
  • Maro ny macro ao amin'ny C API no avadika ho asa inline mahazatra na static.
  • Ny uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, ary sunau modules dia nesorina ary hesorina amin'ny Python 3.13 famoahana. Nesorina ny fiasa PyUnicode_Encode*.

Source: opennet.ru

Add a comment