Tso tawm Python 3.8 programming lus

Tom qab ib xyoos thiab ib nrab ntawm txoj kev loj hlob hais tawm loj programming lus tso tawm Nab hab sej 3.8. Kho kho tshiab rau Python 3.8 ceg npaj ua ntej tso tawm hauv 18 lub hlis. Qhov teeb meem tseem ceeb yuav raug kho rau 5 xyoos txog thaum Lub Kaum Hli 2024. Kev kho kho tshiab rau 3.8 ceg yuav raug tso tawm txhua ob lub hlis, nrog rau thawj qhov kev kho tshiab ntawm Python 3.8.1 tau teem sijhawm rau lub Kaum Ob Hlis.

Ntawm cov ntxiv kev tsim kho tshiab:

  • kev pab txhawb nqa kev ua haujlwm nyob rau hauv cov kab lus nyuaj. Nrog tus tshiab ": =" tus neeg teb xov tooj, nws muaj peev xwm ua kom muaj nuj nqis ua haujlwm hauv lwm cov kab lus, piv txwv li, kom tsis txhob muaj ob txoj haujlwm hu hauv cov lus qhia thiab thaum txhais cov voj voog:

    if (n := len(a)) > 10:
    ...

    hos (block := f.read(256)) != ":
    ...

  • kev pab txhawb nqa tshiab syntax rau kev qhia txog kev ua haujlwm sib cav. Thaum enumerating arguments thaum lub sij hawm muaj nuj nqi txhais, tam sim no koj muaj peev xwm qhia ib tug "/" cais arguments uas tsuas yog muab tus nqi raws li qhov kev txiav txim nyob rau hauv uas tus nqi yog enumerated thaum lub sij hawm muaj nuj nqi hu, los ntawm kev sib cav uas yuav muab tau. nyob rau hauv ib qho kev txiav txim (variable = tus nqi syntax)). Ntawm qhov ua tau zoo, cov yam ntxwv tshiab tso cai rau kev ua haujlwm hauv Python kom ua raws li tus cwj pwm ntawm cov haujlwm uas twb muaj lawm hauv C, thiab tseem kom tsis txhob khi rau cov npe tshwj xeeb, piv txwv li, yog tias lub npe parameter tau npaj yuav hloov mus rau yav tom ntej.

    Tus chij "/" ntxiv rau yav dhau los ntxiv "*" chij, cais cov hloov pauv uas tsuas yog ib qho haujlwm hauv daim ntawv "variable = tus nqi" yog siv tau. Piv txwv li, hauv kev ua haujlwm "def f(a, b, /, c, d, *, e, f):" qhov hloov pauv "a" thiab "b" tsuas yog muab tso rau hauv qhov kev txiav txim cov txiaj ntsig tau teev tseg. ,
    variables “e” thiab “f”, tsuas yog los ntawm txoj haujlwm “kuj txawv = tus nqi”, thiab hloov pauv “c” thiab “d” hauv ib qho ntawm cov hauv qab no:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

  • Ntxiv tshiab C API
    txhawm rau teeb tsa Python pib tsis ua haujlwm, tso cai rau kev tswj hwm tag nrho kev teeb tsa thiab muab cov chaw kho qhov yuam kev siab heev. Cov lus thov API ua rau nws yooj yim rau embed Python tus neeg txhais lus ua haujlwm rau lwm yam C siv;

  • Ua tiav tshiab Vectorcall raws tu qauv kom nkag tau sai rau cov khoom sau ua lus C. Hauv CPython 3.8, kev nkag mus rau Vectorcall tseem txwv rau kev siv sab hauv; hloov mus rau qeb ntawm APIs uas siv tau rau pej xeem yog npaj rau hauv CPython 3.9;
  • Ntxiv hu rau Runtime Audit Hooks, uas muab cov ntawv thov thiab cov txheej txheem hauv Python nrog kev nkag mus rau cov ntaub ntawv qis txog kev nce qib ntawm tsab ntawv los tshuaj xyuas cov kev ua tau ua (piv txwv li, koj tuaj yeem taug qab cov ntshuam ntawm cov qauv, qhib cov ntaub ntawv, siv cov kab, nkag mus rau lub network sockets, khiav code los ntawm exec, eval thiab run_mod);
  • Nyob rau hauv lub module zuaj muab kev txhawb nqa rau Pickle 5 raws tu qauv, siv rau serializing thiab deserializing khoom. Pickle tso cai rau koj los ua kom zoo tshaj qhov hloov pauv ntawm cov ntaub ntawv loj ntawm Python cov txheej txheem hauv ntau cov tub ntxhais thiab ntau qhov kev teeb tsa los ntawm kev txo cov naj npawb ntawm lub cim xeeb luam tawm thiab siv cov txheej txheem kev ua kom zoo ntxiv xws li siv cov ntaub ntawv tshwj xeeb compression algorithms. Qhov thib tsib version ntawm cov txheej txheem yog qhov tseem ceeb rau qhov sib ntxiv ntawm ib qho kev sib kis ntawm kev sib tw, uas cov ntaub ntawv tuaj yeem kis tau los ntawm cov kwj dej loj.
  • Los ntawm lub neej ntawd, qhov thib plaub version ntawm Pickle raws tu qauv yog qhib, uas, piv rau peb version yav dhau los muab los ntawm lub neej ntawd, tso cai rau kev ua tau zoo dua thiab txo qhov loj ntawm cov ntaub ntawv xa mus;
  • Nyob rau hauv lub module ntaus ntawv Ntau yam tshiab tau qhia:
    • Класс TypedDict rau associative arrays uas hom ntaub ntawv yog qhia meej meej rau cov ntaub ntawv txuam nrog cov yuam sij (“TypedDict('Point2D', x=int, y=int, label=str)”).
    • Hom Sau, uas tso cai rau koj txwv tsis pub dhau los yog rov qab tus nqi rau ob peb qhov tseem ceeb ua ntej ("Literal['txuas', 'disconnected']").
    • Kev tsim kho "kawg", uas ua rau nws muaj peev xwm los txheeb xyuas cov txiaj ntsig ntawm qhov sib txawv, kev ua haujlwm, txoj hauv kev thiab cov chav kawm uas tsis tuaj yeem hloov lossis hloov pauv ("pi: Final [float] = 3.1415926536").
  • Ntxiv lub peev xwm los muab lub cache rau cov ntaub ntawv tso ua ke nrog bytecode, khaws cia hauv ib tsob ntoo FS cais thiab cais tawm ntawm cov npe nrog cov lej. Txoj kev rau txuag cov ntaub ntawv nrog bytecode yog teem los ntawm ib tug kuj sib txawv PYTHONPYCACHEPREFIX los yog qhov kev xaiv "-X pycache_prefix";
  • Ua tiav lub peev xwm los tsim kev debug tsim ntawm Python uas siv ABI zoo ib yam rau qhov kev tso tawm, uas tso cai rau koj los thauj cov ntawv txuas ntxiv sau ua lus SI, muab tso ua ke rau kev tso tawm ruaj khov, hauv kev debug tsim;
  • f-strings (formatted literals prefixed with 'f') muab kev txhawb nqa rau tus = tus neeg teb xov tooj (piv txwv li, "f'{expr=}'"), uas tso cai rau koj los hloov cov lus qhia rau cov ntawv nyeem kom yooj yim debugging. Piv txwv li:

    ››› user = 'eric_idle'
    ››› member_since = date(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Qhia "ntxiv» tso cai siv rau hauv ib qho thaiv thaum kawg;
  • Tshiab module ntxiv multiprocessing.shared_memory, tso cai rau kev siv cov cim nco sib koom ua ke hauv ntau qhov kev teeb tsa;
  • Ntawm lub Windows platform, qhov kev siv asyncio tau raug txav los siv cov chav kawm ProactorEventLoop;
  • Kev ua tau zoo ntawm LOAD_GLOBAL cov lus qhia tau nce los ntawm kwv yees li 40% vim yog siv cov khoom siv tshiab caching mechanism.

Tau qhov twg los: opennet.ru

Ntxiv ib saib