Itusilẹ ti ede siseto Python 3.11

Lẹhin ọdun kan ti idagbasoke, itusilẹ pataki ti ede siseto Python 3.11 ti jẹ atẹjade. Ẹka tuntun yoo ṣe atilẹyin fun ọdun kan ati idaji, lẹhin eyi fun ọdun mẹta ati idaji miiran, awọn atunṣe yoo ṣe ipilẹṣẹ fun u lati yọkuro awọn ailagbara.

Ni akoko kanna, idanwo alpha ti ẹka Python 3.12 bẹrẹ (ni ibamu pẹlu iṣeto idagbasoke tuntun, iṣẹ lori ẹka tuntun kan bẹrẹ ni oṣu marun ṣaaju idasilẹ ti ẹka iṣaaju ati de ipele idanwo alpha ni akoko itusilẹ atẹle. ). Ẹka Python 3.12 yoo wa ni itusilẹ alpha fun oṣu meje, lakoko eyiti awọn ẹya tuntun yoo ṣafikun ati ṣatunṣe awọn idun. Lẹhin eyi, awọn ẹya beta yoo ni idanwo fun oṣu mẹta, lakoko eyiti fifi awọn ẹya tuntun kun yoo ni idinamọ ati pe gbogbo akiyesi yoo san si atunṣe awọn idun. Fun oṣu meji to kọja ṣaaju itusilẹ, ẹka naa yoo wa ni ipele oludije itusilẹ, eyiti imuduro ikẹhin yoo ṣee ṣe.

Awọn afikun tuntun si Python 3.11 pẹlu:

  • Iṣẹ pataki ti ṣe lati mu iṣẹ ṣiṣe dara si. Ẹka tuntun pẹlu awọn iyipada ti o ni ibatan si isare ati imuṣiṣẹ inline ti awọn ipe iṣẹ, lilo awọn onitumọ iyara ti awọn iṣẹ iṣe deede (x+x, x*x, xx, a[i], a[i] = z, f(arg) C (arg), o.ọna (), o.attr = z, * seq), ati awọn iṣapeye ti a pese sile nipasẹ awọn iṣẹ Cinder ati HotPy. Ti o da lori iru fifuye, ilosoke ninu iyara ipaniyan koodu ti 10-60%. Ni apapọ, iṣẹ ṣiṣe lori suite idanwo pyperformance pọ nipasẹ 25%.

    Ilana caching bytecode ti tun ṣe, eyiti o ti dinku akoko ibẹrẹ onitumọ nipasẹ 10-15%. Awọn nkan ti o ni koodu ati koodu baiti ti pin ni iṣiro nipasẹ onitumọ, eyiti o jẹ ki o ṣee ṣe lati yọkuro awọn ipele ti awọn koodu bytecode unmarshalling ti a fa jade lati kaṣe ati iyipada awọn nkan pẹlu koodu lati gbe sinu iranti agbara.

  • Nigbati o ba n ṣafihan awọn itọpa ipe ni awọn ifiranṣẹ iwadii, o ṣee ṣe lati ṣafihan alaye nipa ikosile ti o fa aṣiṣe (tẹlẹ, laini nikan ni a ṣe afihan laisi alaye iru apakan ti laini ti o fa aṣiṣe). Alaye itọpa ti o gbooro tun le gba nipasẹ API ati lo lati ya awọn ilana baiticode kọọkan si ipo kan pato ninu koodu orisun nipa lilo ọna codeobject.co_positions () tabi iṣẹ C API PyCode_Addr2Location (). Iyipada naa jẹ ki o rọrun pupọ lati ṣatunṣe awọn iṣoro pẹlu awọn nkan iwe-itumọ ti itẹ-ẹiyẹ, awọn ipe iṣẹ lọpọlọpọ, ati awọn ikosile iṣiro idiju. Pada (ipe aipẹ to kẹhin): Faili "calculation.py", laini 54, ni abajade = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: pipin nipasẹ odo
  • Atilẹyin ti a ṣafikun fun awọn ẹgbẹ imukuro, fifun eto naa ni agbara lati ṣe ipilẹṣẹ ati ilana ọpọlọpọ awọn imukuro oriṣiriṣi ni ẹẹkan. Lati ṣe akojọpọ awọn imukuro lọpọlọpọ ati gbe wọn pọ, awọn oriṣi imukuro tuntun ExceptionGroup ati BaseExceptionGroup ti ni imọran, ati “ayafi *” ti fi kun lati ṣe afihan awọn imukuro kọọkan lati ẹgbẹ kan.
  • Ọna add_note () ti ni afikun si kilasi BaseException, gbigba ọ laaye lati so akọsilẹ ọrọ kan si iyasọtọ, fun apẹẹrẹ, fifi alaye asọye kun ti ko si nigbati imukuro ba ju.
  • Ṣafikun iru Ara pataki kan lati ṣe aṣoju kilasi aladani lọwọlọwọ. Ara le ṣee lo lati ṣe alaye awọn ọna ti o da apẹẹrẹ ti kilasi rẹ pada ni ọna ti o rọrun ju lilo TypeVar lọ. kilasi MyLock: def __tẹ __ (ara) -> Ara: ara.Titiipa () pada ara
  • Ṣe afikun iru LiteralString pataki kan ti o le pẹlu awọn ọrọ gangan okun nikan ti o ni ibamu pẹlu iru LiteralString (ie, igboro ati awọn okun LiteralString, ṣugbọn kii ṣe lainidii tabi awọn gbolohun ọrọ str ni idapo). Iru LiteralString ni a le lo lati ṣe idinwo gbigbe awọn ariyanjiyan okun si awọn iṣẹ, aropo lainidii ti awọn apakan ti awọn okun ninu eyiti o le ja si awọn ailagbara, fun apẹẹrẹ, nigbati o ba ṣẹda awọn okun fun awọn ibeere SQL tabi awọn aṣẹ ikarahun. def run_query (sql: LiteralString) -> ... ... def olupe ( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> Ko si: run_query ("Yan * LATI awọn ọmọ ile-iwe") # ok run_query (okun gangan) # ok run_query("Yan * FROM" + literal_string) # ok run_query(arbitrary_string) # Aṣiṣe ṣiṣe_query( # Aṣiṣe f"Yan * LATI awọn ọmọ ile-iwe Nibo orukọ = {arbitrary_string}" )
  • Iru TypeVarTuple ni a ti ṣafikun, gbigba lilo awọn jeneriki oniyipada, ko dabi TypeVar, eyiti kii ṣe iru kan, ṣugbọn nọmba lainidii ti awọn oriṣi.
  • Ile-ikawe boṣewa pẹlu module tomllib pẹlu awọn iṣẹ fun ṣiṣetọka ọna kika TOML.
  • O ṣee ṣe lati samisi awọn eroja kọọkan ti awọn iwe-itumọ ti a tẹ (TypedDict) pẹlu awọn aami ti a beere ati ti ko nilo lati pinnu awọn aaye ti o nilo ati yiyan (nipa aiyipada, gbogbo awọn aaye ti a kede ni a nilo ti paramita lapapọ ko ba ṣeto si Eke). kilasi Movie(TypedDict): akọle: str odun: NotRequired[int] m1: Fiimu = {"akọle": "Black Panther", "odun": 2018} # O dara m2: Fiimu = {"akọle": "Star Wars" } # O dara (aaye odun jẹ iyan) m3: Fiimu = {“odun”: 2022} # Aṣiṣe, aaye akọle ti o nilo ko kun)
  • Kilasi TaskGroup ti ni afikun si module asyncio pẹlu imuse oluṣakoso ọrọ ọrọ asynchronous ti o duro de ẹgbẹ kan ti awọn iṣẹ ṣiṣe lati pari. Ṣafikun awọn iṣẹ ṣiṣe si ẹgbẹ kan ni lilo ọna ṣẹda_task (). async def akọkọ (): async pẹlu asyncio.TaskGroup () bi tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) tẹjade ("Awọn iṣẹ mejeeji ti pari ni bayi .")
  • Fi kun @dataclass_transform ohun ọṣọ fun awọn kilasi, awọn ọna ati awọn iṣẹ, nigba ti pato, eto ṣiṣe ayẹwo iru aimi ṣe itọju ohun naa bi ẹni pe o nlo @dataclasses.dataclass ọṣọ. Ninu apẹẹrẹ ti o wa ni isalẹ, kilasi OnibaraModel, nigbati o ba n ṣayẹwo awọn iru, yoo ṣe ilana bakanna si kilasi pẹlu @dataclasses.dataclass ọṣọ, i.e. bi nini ọna __init__ ti o gba id ati awọn oniyipada orukọ. @dataclass_transform() kilasi ModelBase: ... kilasi CustomerModel(ModelBase): id: int orukọ: str
  • Ni awọn ikosile deede, agbara lati lo akojọpọ atomiki ((?>...)) ati awọn iye iwọn (*+, ++, ?+, {m,n}+) ti ni afikun.
  • Fi kun aṣayan laini aṣẹ "-P" ati PYTHONSAFEPATH oniyipada ayika lati mu asomọ laifọwọyi ti awọn ọna faili ti ko ni aabo si sys.path.
  • IwUlO py.exe fun Syeed Windows ti ni ilọsiwaju ni pataki, fifi atilẹyin kun fun sintasi “-V:”. / " ni afikun si "- . "
  • Ọpọlọpọ awọn macros ni C API ni iyipada si deede tabi awọn iṣẹ laini aimi.
  • Awọn uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, snhddr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, ati sunau module ti ti parẹ ati pe yoo yọ kuro ninu Python 3.13 idasilẹ. Awọn iṣẹ PyUnicode_Encode* kuro.

orisun: opennet.ru

Fi ọrọìwòye kun