Tso tawm Python 3.11 programming lus

Tom qab ib xyoos ntawm kev txhim kho, qhov tseem ceeb tshaj tawm ntawm Python 3.11 programming lus tau raug luam tawm. Cov ceg tshiab yuav tau txais kev txhawb nqa rau ib xyoos thiab ib nrab xyoo, tom qab ntawd rau lwm peb xyoos thiab ib nrab xyoo, kev kho yuav raug tsim rau nws txhawm rau tshem tawm qhov tsis zoo.

Nyob rau tib lub sijhawm, kev sim alpha ntawm Python 3.12 ceg pib (raws li lub sijhawm tsim kho tshiab, kev ua haujlwm ntawm ceg tshiab pib tsib lub hlis ua ntej tso tawm ntawm ceg dhau los thiab mus txog qib alpha xeem los ntawm lub sijhawm tso tawm tom ntej. ). Python 3.12 ceg yuav nyob rau hauv alpha tso rau xya lub hlis, thaum lub sij hawm uas cov yam ntxwv tshiab yuav raug ntxiv thiab kab laum. Tom qab no, beta versions yuav raug sim rau peb lub hlis, thaum lub sijhawm ntxiv cov yam ntxwv tshiab yuav raug txwv thiab tag nrho cov xim yuav raug them rau kho cov kab. Rau ob lub hlis dhau los ua ntej qhov kev tso tawm, ceg yuav nyob ntawm qhov kev tso tawm tus neeg sib tw, thaum kawg yuav ua kom ruaj khov.

Tshiab ntxiv rau Python 3.11 suav nrog:

  • Cov haujlwm tseem ceeb tau ua tiav los txhim kho kev ua tau zoo. Cov ceg tshiab suav nrog cov kev hloov pauv uas cuam tshuam txog kev nrawm thiab kev xa tawm hauv nruab nrab ntawm kev hu xov tooj, kev siv cov neeg txhais lus nrawm ntawm cov qauv kev ua haujlwm (x + x, x * x, xx, a[i], a[i] = z, f(arg) C(arg), o.method(), o.attr = z, *seq), as well as optimizations npaj los ntawm Cinder thiab HotPy tej yaam num. Nyob ntawm seb hom kev thauj khoom, muaj qhov nce hauv cov lej ua tiav ntawm 10-60%. Qhov nruab nrab, kev ua tau zoo ntawm qhov kev ntsuas pyperformance tau nce 25%.

    Lub bytecode caching mechanism tau raug kho dua tshiab, uas tau txo tus neeg txhais lus pib lub sijhawm los ntawm 10-15%. Cov khoom nrog cov lej thiab bytecode tam sim no raug faib los ntawm tus neeg txhais lus, uas ua rau nws muaj peev xwm tshem tawm cov theem ntawm unmarshalling bytecode rho tawm los ntawm cache thiab hloov cov khoom nrog cov lej kom muab tso rau hauv lub cim xeeb dynamic.

  • Thaum tso saib cov cim hu rau hauv cov lus tshuaj ntsuam xyuas, tam sim no muaj peev xwm tso saib cov ntaub ntawv hais txog qhov kev qhia uas ua rau muaj qhov yuam kev (yav dhau los, tsuas yog cov kab tau nthuav tawm yam tsis tau piav qhia txog qhov twg ntawm txoj kab ua rau muaj qhov yuam kev). Cov ntaub ntawv txuas ntxiv tuaj yeem tau txais los ntawm API thiab siv los qhia cov lus qhia bytecode ib tus neeg rau ib txoj haujlwm tshwj xeeb hauv qhov chaws siv codeobject.co_positions() txoj kev lossis C API muaj nuj nqi PyCode_Addr2Location(). Qhov kev hloov pauv ua rau nws yooj yim dua rau kev daws teeb meem nrog cov khoom siv hauv phau ntawv txhais lus, ntau lub luag haujlwm hu, thiab cov lus qhia lej nyuaj. Traceback (tam sim no hu xov tooj kawg): Cov ntaub ntawv "calculation.py", kab 54, hauv qhov tshwm sim = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: faib los ntawm xoom
  • Ntxiv kev txhawb nqa rau pab pawg tshwj xeeb, muab qhov kev pab cuam muaj peev xwm tsim thiab ua tiav ntau qhov sib txawv ntawm ib zaug. Txhawm rau pab pawg ntau qhov kev zam thiab tsa lawv ua ke, hom kev zam tshiab ExceptionGroup thiab BaseExceptionGroup tau raug npaj, thiab "tsuas yog *" qhia tau ntxiv los qhia txog cov kev zam ntawm ib pawg.
  • Txoj kev add_note() tau ntxiv rau hauv chav kawm BaseException, tso cai rau koj xa cov ntawv sau rau qhov kev zam, piv txwv li, ntxiv cov ntaub ntawv ntsiab lus uas tsis muaj thaum qhov kev zam raug pov tseg.
  • Ntxiv ib hom Self tshwj xeeb los sawv cev rau cov chav kawm ntiag tug tam sim no. Nws tus kheej tuaj yeem siv los piav qhia txog txoj hauv kev uas rov ua piv txwv ntawm nws cov chav kawm hauv txoj kev yooj yim dua li siv TypeVar. chav kawm MyLock: def __enter__(self) -> Self: self.lock() rov qab tus kheej
  • Ntxiv ib qho tshwj xeeb LiteralString hom uas tuaj yeem tsuas suav nrog cov kab ntawv uas tau sib xws nrog LiteralString hom (piv txwv li, liab qab thiab LiteralString cov hlua, tab sis tsis yog arbitrary lossis ua ke str strings). Hom LiteralString tuaj yeem siv los txwv tsis pub dhau ntawm txoj hlua sib cav rau kev ua haujlwm, kev hloov pauv ntawm cov hlua uas tuaj yeem ua rau muaj qhov tsis zoo, piv txwv li, thaum tsim cov hlua rau SQL queries lossis plhaub cov lus txib. def run_query(sql: LiteralString) -> ... ... def caller(arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> None: run_query("SELECT * FROM students") # ok run_query(literal_string) # ok run_query( "SELECT * FROM" + literal_string) # ok run_query(arbitrary_string) # yuam kev run_query( # yuam kev f"SELECT * FROM cov tub ntxhais kawm qhov twg lub npe = {arbitrary_string}" )
  • Hom TypeVarTuple tau ntxiv lawm, tso cai rau kev siv cov generics sib txawv, tsis zoo li TypeVar, uas npog tsis yog ib hom, tab sis tus naj npawb ntawm hom.
  • Cov tsev qiv ntawv txheem suav nrog tomllib module nrog cov haujlwm rau kev txheeb xyuas TOML hom.
  • Nws yog ib qho ua tau los khij ib tus neeg ntawm cov ntawv nyeem (TypedDict) nrog cov ntawv yuav tsum tau thiab tsis xav tau los txiav txim siab qhov xav tau thiab xaiv thaj chaw (los ntawm lub neej ntawd, tag nrho cov lus tshaj tawm yuav tsum tau ua yog tias tag nrho cov ntsuas tsis raug teeb tsa rau False). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # OK (lub xyoo teb yog xaiv tau) m3: Movie = {"xyoo": 2022} # yuam kev, lub npe uas yuav tsum tau teb tsis tau sau rau hauv)
  • Cov chav kawm TaskGroup tau ntxiv rau asyncio module nrog rau kev siv tus asynchronous ntsiab lus tus thawj tswj uas tos ib pab pawg ua haujlwm kom tiav. Ntxiv cov dej num rau ib pab pawg yog ua tiav siv txoj kev create_task() . async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("Ob txoj haujlwm tau ua tiav tam sim no .")
  • Ntxiv @dataclass_transform decorator rau cov chav kawm, txoj hauv kev thiab kev ua haujlwm, thaum tau teev tseg, hom kev tshuaj xyuas zoo li qub kho cov khoom xws li siv @dataclasses.dataclass decorator. Hauv qhov piv txwv hauv qab no, Chav Kawm CustomerModel, thaum kuaj xyuas hom, yuav ua tiav zoo ib yam li cov chav kawm nrog @dataclasses.dataclass decorator, i.e. raws li muaj __init__ txoj kev uas lees txais id thiab lub npe hloov pauv. @dataclass_transform() class ModelBase: … class CustomerModel(ModelBase): id: int name: str
  • Hauv cov kab lus tsis tu ncua, muaj peev xwm siv atomic grouping ((?>...)) thiab muaj cov quantifiers (*+, ++, ?+, {m, n}+) tau ntxiv.
  • Ntxiv "-P" hais kom ua kab kev xaiv thiab PYTHONSAFEPATH ib puag ncig hloov pauv los ua kom tsis siv neeg txuas ntawm cov ntaub ntawv tsis raug cai rau sys.path.
  • Cov khoom siv hluav taws xob py.exe rau lub Windows platform tau txhim kho tau zoo, ntxiv kev txhawb nqa rau "-V:" syntax. / "ntxiv rau"- . "
  • Ntau cov macros hauv C API tau hloov mus rau hauv cov haujlwm tsis tu ncua lossis zoo li qub inline.
  • Lub uu, cgi, kav, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, thiab sunau modules tau deprecated thiab yuav raug tshem tawm hauv Python 3.13 tso. Tshem tawm PyUnicode_Encode* ua haujlwm.

Tau qhov twg los: opennet.ru

Ntxiv ib saib