Itusilẹ ti ede siseto Python 3.10

Lẹhin ọdun kan ti idagbasoke, itusilẹ pataki ti ede siseto Python 3.10 ti gbekalẹ. Ẹ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.11 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.11 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.10 pẹlu:

  • Awọn oniṣẹ “baramu” ati “ọran” ti a ṣe imuse fun ibaramu ilana, eyiti o mu kika kika koodu pọ si, jẹ ki ibaamu awọn nkan Python lainidii, ati alekun igbẹkẹle koodu nipasẹ iṣayẹwo iru aimi ilọsiwaju. Imuse jẹ bii oniṣẹ “baramu” ti a pese ni Scala, Rust, ati F#, eyiti o ṣe afiwe abajade ti ikosile kan pẹlu atokọ ti awọn ilana ti a ṣe akojọ si awọn bulọọki ti o da lori oniṣẹ “ọran”.

    def http_error(ipo): ipo baramu: ọran 400: pada “Ibeere buburu” ọran 401|403|404: pada “Ko gba laaye” ọran 418: pada “Mo jẹ ikoko teapot” _: pada “Ohun miiran”

    O le tu awọn nkan silẹ, awọn tuples, awọn atokọ, ati awọn ilana lainidii lati di awọn oniyipada da lori awọn iye to wa tẹlẹ. O gba ọ laaye lati ṣalaye awọn awoṣe itẹ-ẹiyẹ, lo awọn ipo “ti o ba” ninu awoṣe, lo awọn iboju iparada (“[x, y, * isinmi]”), awọn maapu bọtini/iye (fun apẹẹrẹ, {“bandwidth”: b, “lairi” ”: l} lati yọkuro awọn iye “bandiwidi” ati “lairi” lati inu iwe-itumọ-itumọ kan), jade awọn awoṣe inu-itumọ (":=" oniṣẹ ẹrọ), lo awọn iduro ti a darukọ ninu awoṣe kan. Ninu awọn kilasi, o ṣee ṣe lati ṣe akanṣe ihuwasi ibaramu pẹlu lilo ọna “__match__()”.

    lati awọn kilasi data gbe wọle dataclass @dataclass kilasi Point: x: int y: int def whereis (ojuami): ojuami baramu: irú Point (0, 0): titẹ ("Oti") irú Point (0, y): titẹ (f" Y={y}") irú kókó abájọ (x, 0): títẹ(f"X={x}") kókó ọ̀rọ̀ (): títẹ("Níbòmíràn") ọ̀rọ̀ _: títẹ("Kì í ṣe ojuami") báramu ojuami: irú Point (x, y) ti x == y: titẹ (f"Y=X ni {x}") oro Point (x, y): titẹ (f"Ko lori akọ-rọsẹ") RED, GREEN, BLUE = 0, 1, 2 baramu awọ: irú RED: tẹjade ("Mo ri pupa!") irú GREEN: titẹ (" Koriko jẹ alawọ ewe ") irú bulu: titẹ ("Mo n rilara awọn blues :(")

  • O ṣee ṣe ni bayi lati lo awọn akọmọ ninu alaye lati pin asọye ti ikojọpọ ti awọn oluṣakoso agbegbe kọja awọn laini pupọ. O tun gba ọ laaye lati lọ kuro ni aami idẹsẹ lẹhin oluṣakoso ọrọ-ọrọ ikẹhin ninu ẹgbẹ: pẹlu ( CtxManager1 () gẹgẹbi apẹẹrẹ1, CtxManager2 () gẹgẹbi apẹẹrẹ2, CtxManager3 () gẹgẹbi apẹẹrẹ3,): ...
  • Ijabọ ilọsiwaju ti ipo koodu ti awọn aṣiṣe ti o ni ibatan si awọn àmúró ti ko tii ati awọn agbasọ ọrọ ni awọn ọrọ gangan. Fun apẹẹrẹ, nigba ti àmúró ti ko tii, dipo jijabọ aṣiṣe sintasi kan ninu itumọ ti o tẹle, itọkasi ni bayi ṣe afihan àmúró ṣiṣi ati tọkasi pe ko si idinamọ pipade. Faili "example.py" a kò ni pipade

    Fikun-un afikun awọn ifiranṣẹ aṣiṣe sintasi amọja: sonu aami “:” ṣaaju idina kan ati ninu awọn iwe-itumọ, kii ṣe ipinya tuple kan pẹlu awọn akọmọ, sonu aami idẹsẹ kan ninu awọn atokọ, sisọ idinaki “gbiyanju” laisi “ayafi” ati “ipari”, ni lilo "= "dipo "= = "ni awọn afiwera, ni pato * -awọn ikosile ni f-strings. Ni afikun, o ṣe idaniloju pe gbogbo ikosile iṣoro ti wa ni afihan, kii ṣe ibẹrẹ nikan, ati alaye diẹ sii ti o han gbangba nipa ipo ti awọn aṣiṣe ti o ni nkan ṣe pẹlu indentation ti ko tọ. >>> def foo(): … ti o ba ti lel: … x = 2 Faili “”, laini 3 x = 2 ^ IndentationError: o nireti bulọki indented lẹhin alaye 'if' ni laini 2

    Ninu awọn aṣiṣe ti o ṣẹlẹ nipasẹ awọn typos ni awọn orukọ ti awọn abuda ati awọn orukọ oniyipada ninu iṣẹ kan, iṣeduro kan pẹlu orukọ to pe yoo jade. >>> collections.namedtoplo Traceback (ipe aipẹ to kẹhin): Faili "", laini 1, ninu Aṣiṣe Attribute: module 'collections' ko ni abuda 'namedtoplo'. Njẹ o tumọ si: nametuple?

  • Fun awọn irinṣẹ n ṣatunṣe aṣiṣe ati awọn profaili, awọn iṣẹlẹ itọpa ti pese pẹlu awọn nọmba laini gangan ti koodu ti a ṣe.
  • Fi kun sys.flags.warn_default_encoding eto lati ṣe afihan ikilọ nipa awọn aṣiṣe ti o pọju ti o ni nkan ṣe pẹlu TextIOWrapper ati ṣiṣi () ṣiṣe UTF-8 awọn faili ti a fi koodu pamọ laisi pato ni pato aṣayan 'encoding=»utf-8″' (ASCII fifi koodu ti lo nipasẹ aiyipada). Itusilẹ tuntun tun pese agbara lati pato iye 'fifipamọ = "agbegbe"' lati ṣeto fifi ẹnọ kọ nkan ti o da lori agbegbe lọwọlọwọ.
  • A ti ṣafikun oniṣẹ tuntun si module titẹ, eyiti o pese awọn irinṣẹ fun asọye iru awọn asọye, gbigba lilo sintasi “X | Y" lati yan ọkan ninu awọn iru (Iru X tabi Y iru). def square (nọmba: int | leefofo) -> int | leefofo: nọmba ipadabọ ** 2 jẹ deede si itumọ ti atilẹyin tẹlẹ: def square (nọmba: Union[int, float]) -> Union[int, leefofo]: nọmba ipadabọ ** 2
  • Oniṣẹ Concatenate ati oniyipada ParamSpec ti ni afikun si module titẹ, eyiti o gba ọ laaye lati ṣe alaye afikun fun ṣiṣe ayẹwo iru aimi nigba lilo Callable. Module titẹ naa tun ṣafikun awọn iye pataki TypeGuard lati ṣe alaye iru awọn iṣẹ aabo ati TypeAlias ​​lati ṣalaye ni pato iru inagijẹ kan. StrCache: TypeAlias ​​= 'Kaṣe[str]' # inagijẹ iru kan
  • Iṣẹ zip () n ṣe imuse asia “muna” yiyan, eyiti, nigba ti o ba wa ni pato, ṣayẹwo boya awọn ariyanjiyan ti n sọ di gigun kanna. >>> akojọ (zip (('a', 'b', 'c'), (1, 2, 3), muna = Otitọ)) [('a', 1), ('b', 2) , ('c', 3)] >>> akojọ (zip(ibiti (3), ['ọya','fi','fo','fum'], strict=Otitọ)) ipadabọ (ipe aipẹ to kẹhin ): … ValueError: zip() ariyanjiyan 2 gun ju ariyanjiyan 1
  • Awọn iṣẹ tuntun ti a ṣe sinu aiter () ati atẹle () ni a dabaa pẹlu imuse awọn afọwọṣe asynchronous si awọn iṣẹ iter () ati atẹle ().
  • Awọn iṣẹ ti str (), awọn baiti () ati awọn olupilẹṣẹ bytearray () nigba ṣiṣẹ pẹlu awọn ohun kekere ti ni ilọsiwaju nipasẹ 30-40%.
  • Dinku nọmba awọn iṣẹ agbewọle wọle ni module runpy. Aṣẹ "python3 -m module_name" ni bayi n ṣiṣẹ ni apapọ awọn akoko 1.4 ni iyara nitori idinku awọn modulu agbewọle lati 69 si 51.
  • Ilana LOAD_ATTR nlo ẹrọ caching fun awọn opcodes kọọkan, eyiti o jẹ ki o ṣee ṣe lati yara iṣẹ pẹlu awọn abuda deede nipasẹ 36%, ati pẹlu awọn iho nipasẹ to 44%.
  • Nigbati o ba n kọ Python pẹlu aṣayan “-enable-optimizations”, ipo “-fno-semantic-interposition” ti ṣiṣẹ ni bayi, eyiti o fun laaye ni iyara onitumọ nipasẹ to 30% ni akawe si ile pẹlu “-enable-pinpin "aṣayan.
  • Hashlib ati awọn modulu ssl ti ṣafikun atilẹyin fun OpenSSL 3.0.0 ati dawọ atilẹyin awọn ẹya OpenSSL ti o dagba ju 1.1.1.
  • A ti yọkuro onisọtọ atijọ, eyiti o rọpo ni ẹka iṣaaju nipasẹ parser PEG (Parsing Expression Grammar). Module formatter ti a ti kuro. A ti yọ paramita loop kuro ni asyncio API. Awọn ọna ti a ti yọkuro tẹlẹ ti yọkuro. Awọn iṣẹ Py_UNICODE_str* ti o nṣe afọwọyi awọn gbolohun ọrọ Py_UNICODE* ti yọkuro.
  • Module distutils ti jẹ idinku ati pe o ti ṣeto fun yiyọ kuro ni Python 3.12. Dipo awọn distutils, o gba ọ niyanju lati lo awọn irinṣẹ setup, apoti, Syeed, shutil, subprocess ati awọn modulu sysconfig. Ilana wstr ni PyUnicodeObject ti wa ni idaduro ati iṣeto fun yiyọ kuro.

orisun: opennet.ru

Fi ọrọìwòye kun