Kutolewa kwa lugha ya programu ya Python 3.8

Baada ya mwaka na nusu ya maendeleo imewasilishwa toleo kuu la lugha ya programu Python 3.8. Sasisho za kurekebisha kwa tawi la Python 3.8 iliyopangwa kutolewa ndani ya miezi 18. Udhaifu mkubwa utarekebishwa kwa miaka 5 hadi Oktoba 2024. Masasisho ya marekebisho ya tawi la 3.8 yatatolewa kila baada ya miezi miwili, na toleo la kwanza la urekebishaji la Python 3.8.1 limepangwa Desemba.

Miongoni mwa walioongezwa ubunifu:

  • Support shughuli za mgawo ndani ya misemo changamano. Ukiwa na opereta mpya ":=", inawezekana kufanya shughuli za ugawaji thamani ndani ya misemo mingine, kwa mfano, ili kuzuia simu za utendakazi mara mbili katika taarifa za masharti na wakati wa kufafanua vitanzi:

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

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

  • Support syntax mpya ya kubainisha hoja za utendakazi. Wakati wa kuorodhesha hoja wakati wa ufafanuzi wa chaguo la kukokotoa, sasa unaweza kubainisha "/" ili kutenganisha hoja zinazoweza kugawiwa tu thamani kulingana na mpangilio ambao maadili yameorodheshwa wakati wa simu ya kukokotoa, kutoka kwa hoja zinazoweza kugawiwa. kwa mpangilio wowote (variable=value syntax) ). Kwa upande wa vitendo, kipengele kipya kinaruhusu kazi katika Python kuiga kabisa tabia ya kazi zilizopo katika C, na pia kuepuka kumfunga kwa majina maalum, kwa mfano, ikiwa jina la parameter limepangwa kubadilishwa katika siku zijazo.

    Alama ya "/" inakamilisha alama ya "*" iliyoongezwa hapo awali, ikitenganisha vigeu ambavyo ni kazi tu iliyo katika fomu ya "variable=value" inatumika. Kwa mfano, katika kazi "def f (a, b, /, c, d, *, e, f):" vigezo "a" na "b" vinaweza tu kupewa kwa utaratibu maadili yameorodheshwa. ,
    viambajengo "e" na "f", kupitia tu kazi "kigeu = thamani", na vigeu "c" na "d" kwa mojawapo ya njia zifuatazo:

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

  • Imeongezwa API mpya ya C
    kusanidi vigezo vya uanzishaji wa Python, kuruhusu udhibiti kamili juu ya yote usanidi na kutoa vifaa vya hali ya juu vya kushughulikia makosa. API inayopendekezwa hurahisisha kupachika utendakazi wa mkalimani wa Python kwenye programu zingine za C;

  • Imetekelezwa itifaki mpya ya Vectorcall kwa ufikiaji wa haraka wa vitu vilivyoandikwa kwa lugha ya C. Katika CPython 3.8, ufikiaji wa Vectorcall bado ni mdogo kwa matumizi ya ndani; uhamishaji hadi aina ya API zinazoweza kufikiwa na umma umepangwa katika CPython 3.9;
  • Imeongezwa wito kwa Hooks za Ukaguzi wa Runtime, ambayo hutoa programu na mifumo katika Python na ufikiaji wa habari ya kiwango cha chini juu ya maendeleo ya hati kukagua vitendo vilivyofanywa (kwa mfano, unaweza kufuatilia uagizaji wa moduli, kufungua faili, kwa kutumia ufuatiliaji, kufikia soketi za mtandao, nambari inayoendesha kupitia exec, eval na run_mod);
  • Katika moduli kachumbari salama msaada kwa ajili ya itifaki ya kachumbari 5, inayotumika kwa ajili ya kusawazisha na kuondoa vitu. Kachumbari hukuruhusu kuboresha uhamishaji wa idadi kubwa ya data kati ya michakato ya Python katika usanidi wa msingi na wa nodi nyingi kwa kupunguza idadi ya utendakazi wa kunakili kumbukumbu na kutumia mbinu za uboreshaji zaidi kama vile kutumia algoriti za mbano za data mahususi. Toleo la tano la itifaki linajulikana kwa kuongezwa kwa hali ya maambukizi ya nje ya bendi, ambayo data inaweza kupitishwa kando na mkondo mkuu wa kachumbari.
  • Kwa chaguo-msingi, toleo la nne la itifaki ya Pickle imeanzishwa, ambayo, ikilinganishwa na toleo la tatu lililotolewa hapo awali na default, inaruhusu utendaji wa juu na kupunguza ukubwa wa data iliyopitishwa;
  • Katika moduli kuandika Vipengele vingi vipya vinaletwa:
    • Hatari TypedDict kwa safu shirikishi ambazo maelezo ya aina yamebainishwa kwa uwazi kwa data inayohusishwa na vitufe (β€œTypedDict('Point2D', x=int, y=int, label=str)").
    • Aina Hasa, ambayo hukuruhusu kuweka kikomo cha kigezo au kurudisha thamani kwa thamani chache zilizobainishwa awali (β€œLiteral['imeunganishwa', 'imetenganishwa']").
    • Kubuni "Mwisho", ambayo inafanya uwezekano wa kufafanua maadili ya vigezo, kazi, mbinu na madarasa ambayo hayawezi kubadilishwa au kukabidhiwa upya ("pi: Final[float] = 3.1415926536").
  • Imeongeza uwezo wa kukabidhi kache kwa faili zilizokusanywa na bytecode, iliyohifadhiwa katika mti tofauti wa FS na kutengwa na saraka zilizo na msimbo. Njia ya kuhifadhi faili na bytecode imewekwa kupitia kutofautisha PYTHONPYCACHEPREFIX au chaguo "-X pycache_prefix";
  • Imetekelezwa uwezo wa kuunda miundo ya utatuzi ya Python inayotumia ABI inayofanana na toleo, ambayo hukuruhusu kupakia viendelezi vilivyoandikwa kwa lugha ya SI, iliyokusanywa kwa matoleo thabiti, katika ujenzi wa utatuzi;
  • f-strings (taarifa zenye muundo zilizoamrishwa na 'f') hutoa usaidizi kwa = opereta (kwa mfano, "f'{expr=}'"), ambayo hukuruhusu kubadilisha usemi kuwa maandishi kwa utatuzi rahisi. Kwa mfano:

    β€Ίβ€Ίβ€Ί mtumiaji = 'eric_idle'
    β€Ίβ€Ίβ€Ί member_tangu = tarehe(1975, 7, 31)
    β€Ίβ€Ίβ€Ί f'{user=} {mwanachama_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Usemi"kuendeleaΒ»kuruhusiwa kutumika ndani ya block hatimaye;
  • Moduli mpya imeongezwa multiprocessing.shared_memory, kuruhusu matumizi ya sehemu za kumbukumbu zilizoshirikiwa katika usanidi wa michakato mingi;
  • Kwenye jukwaa la Windows, utekelezaji wa asyncio umehamishwa ili kutumia darasa ProactorEventLoop;
  • Utendaji wa maagizo ya LOAD_GLOBAL umeongezwa kwa takriban 40% kutokana na matumizi ya utaratibu mpya wa kuweka akiba ya msimbo wa kitu.

Chanzo: opennet.ru

Kuongeza maoni