Sakin yaren shirye-shiryen Python 3.10

Bayan shekara guda na ci gaba, an gabatar da gagarumin fitowar harshen shirye-shirye na Python 3.10. Za a tallafa wa sabon reshen na tsawon shekara daya da rabi, bayan haka kuma har tsawon shekaru uku da rabi, za a samar da gyare-gyare a gare shi don kawar da lahani.

A lokaci guda kuma, an fara gwajin alpha na reshen Python 3.11 (bisa ga sabon jadawalin ci gaba, aikin sabon reshe ya fara watanni biyar kafin a fito da reshen da ya gabata kuma ya kai matakin gwajin alpha a lokacin fitowa ta gaba. ). Reshen Python 3.11 zai kasance cikin sakin alpha har tsawon watanni bakwai, yayin da za a ƙara sabbin abubuwa da gyara kwari. Bayan wannan, za a gwada nau'ikan beta na tsawon watanni uku, yayin da za a hana ƙara sabbin abubuwa kuma za a biya dukkan hankali ga gyara kurakurai. A cikin watanni biyu na ƙarshe kafin a saki, reshe zai kasance a matakin ɗan takara na saki, inda za a yi kwanciyar hankali na ƙarshe.

Sabbin ƙari ga Python 3.10 sun haɗa da:

  • Aiwatar da ma'aikatan "match" da "harka" don daidaita tsarin, waɗanda ke haɓaka iya karanta lambar, sauƙaƙa madaidaicin abubuwan Python na sabani, da haɓaka amincin lambar ta hanyar bincika nau'ikan ci gaba. Aiwatar da ita tana kama da ma'aikacin "match" da aka bayar a cikin Scala, Rust, da F#, wanda ke kwatanta sakamakon ƙayyadaddun magana tare da jerin ƙirar da aka jera a cikin tubalan dangane da ma'aikacin "harka".

    def http_error(status): Matsayin wasa: case 400: mayar da shari'ar "Bad request" 401|403|404: mayar da shari'ar "Ba a yarda ba" 418: mayar da "Ni mai shayi ne" case

    Kuna iya kwashe abubuwa, tuples, jeri, da jeri na sabani don ɗaure masu canji dangane da ƙimar data kasance. An ba da izini don ayyana samfuran gida, yi amfani da ƙarin yanayi “idan” a cikin samfuri, yi amfani da abin rufe fuska (“[x, y, * hutawa]”), taswirar maɓalli/ƙimar (misali, {“bandwidth”: b, “latency ": l} don cire "bandwidth" da "latency" dabi'u daga ƙamus), cire ƙananan samfura (": = " afareta ), yi amfani da madaukai masu suna a cikin samfuri. A cikin azuzuwan, yana yiwuwa a keɓance yanayin daidaitawa ta amfani da hanyar "__match__()".

    daga azuzuwan bayanai shigo da dataclass @class class Point: x: int y: int def whereis(point): matches point: case Point(0, 0): print("Asalin") harka Point(0, y): bugu(f" Y={y}") harka Point(x, 0): bugu(f"X={x}") harka Point(): bugu("Wani wuri") harka _: buga("Ba batu ba") daidai batu: Harka Point (x, y) idan x == y: bugu (f"Y=X a {x}") harka Point(x, y): buga (f"Ba akan diagonal") JAN, GREEN, BLUE = 0, 1, 2 match colour: case RED: print ("Na ga ja!") case GREEN: print("Ciyawa kore ne") case BLUE: print("Ina jin blues:(")

  • Yanzu yana yiwuwa a yi amfani da baka a cikin bayanin tare da raba ma'anar tarin manajojin mahallin a kan layi dayawa. Hakanan ana ba da izinin barin waƙafi bayan mai sarrafa mahallin ƙarshe a cikin ƙungiyar: tare da ( CtxManager1 () a matsayin misali1, CtxManager2 () a matsayin misali2, CtxManager3 () a matsayin misali3,): ...
  • Ingantattun rahoto na wurin lambar kurakurai masu alaƙa da takalmin gyaran kafa da ba a rufe ba da ƙididdiga a cikin ainihin kirtani. Misali, lokacin da aka sami takalmin gyaran kafa da ba a rufe ba, maimakon bayar da rahoton kuskuren daidaitawa a cikin ginin mai zuwa, mai nuni yanzu yana haskaka takalmin gyaran kafa kuma yana nuna cewa babu toshewar rufewa. Fayil "example.py", layin 1 da ake tsammani = {9:1, 18:2, 19:2, 27:3, 28:3, 29:3, 36:4, 37:4, ^SyntaxError:'{' ba a taba rufe ba

    An ƙara ƙarin ƙarin saƙon kuskure na musamman na daidaitawa: alamar ":" alama a gaban toshe kuma a cikin ƙamus, rashin raba tuple tare da baka, rasa waƙafi a cikin jeri, ƙayyade toshe "gwada" ba tare da "ban da" da "ƙarshe", ta amfani da "=" " maimakon "= = "a cikin kwatancen, ƙayyade * -bayani a cikin f-strings. Bugu da ƙari, yana tabbatar da cewa an ba da haske ga dukan maganganun matsala, ba kawai farkon ba, da kuma ƙarin bayani game da mahallin kurakurai da ke hade da kuskuren kuskure. >>> def foo(): … idan lel: … x = 2 Fayil “”, layi na 3 x = 2 ^ Kuskuren Indentation: ana sa ran toshewar toshe bayan bayanin ‘if’ a layi na 2

    A cikin kurakuran da aka samu ta hanyar buga rubutu a cikin sunayen sifofi da sunaye masu canzawa a cikin aiki, ana fitar da shawarwari tare da madaidaicin suna. >>> collections.mai sunatoplo Traceback (kira na baya-bayan nan): Fayil "", layi na 1, a cikin Kuskuren Halaye: module 'tarin' ba shi da sifa 'mai sunatoplo'. Kana nufin: nametuple?

  • Don kayan aikin gyara kurakurai da masu bayanin martaba, ana samar da abubuwan da suka faru tare da ainihin lambobi na lambar da aka kashe.
  • An ƙara saitin sys.flags.warn_default_encoding don nuna gargaɗi game da yuwuwar kurakurai masu alaƙa da TextIOWrapper da buɗe() sarrafa fayilolin UTF-8 ba tare da ƙayyadadden zaɓin 'encoding=»utf-8″' (ASCII encoding ana amfani dashi ta tsohuwa). Sabuwar sakin kuma tana ba da ikon tantance ƙimar 'encoding="locale"' don saita rufaffen bisa ga wurin na yanzu.
  • An ƙara sabon ma'aikaci zuwa tsarin bugawa, wanda ke ba da kayan aiki don tantance nau'in annotations, yana ba da damar yin amfani da ma'anar "X | Y" don zaɓar ɗaya daga cikin nau'ikan (nau'in X ko Y). def square (lamba: int | taso ruwa) -> int | iyo: lambar dawowa ** 2 daidai yake da ginin da aka goyan baya a baya: murabba'in def (lamba: Union[int, float]) -> Union[int, float]: lambar dawowa ** 2
  • An ƙara ma'aikacin Concatenate da ma'aunin ParamSpec zuwa tsarin rubutu, wanda ke ba ka damar ƙaddamar ƙarin bayani don duba nau'in a tsaye lokacin amfani da Callable. Tsarin buga rubutu kuma yana ƙara ƙima na musamman TypeGuard don bayyana nau'ikan ayyukan kariya da TypeAlias ​​don ayyana nau'in laƙabi a sarari. StrCache: TypeAlias ​​= 'Cache[str]' # nau'in laƙabi
  • Aikin zip() yana aiwatar da tuta ta “tsatsattsattse” na zaɓi, wanda, lokacin da aka ƙayyade, yana bincika ko muhawarar da ake ƙira suna da tsayi iri ɗaya. >>> lissafin (zip (('a','b','c'), (1, 2, 3), m = Gaskiya)) [('a', 1), ('b', 2) . Kuskuren ValueError: zip() hujja 3 ya fi tsayi fiye da hujja 3
  • Sabbin ayyukan ginanniyar aiter() da na gaba() ana samarwa tare da aiwatar da kwatankwacin kwatankwacin aiki zuwa ayyuka iter() da na gaba().
  • Ayyukan str (), bytes () da bytearray () masu ginawa lokacin aiki tare da ƙananan abubuwa an haɓaka da 30-40%.
  • Rage yawan ayyukan shigo da kaya a cikin tsarin runpy. Umurnin "python3 -m module_name" yanzu yana aiki akan matsakaita sau 1.4 cikin sauri saboda rage shigo da kayayyaki daga 69 zuwa 51.
  • Umarnin LOAD_ATTR yana amfani da tsarin caching don kowane opcodes, wanda ya ba da damar haɓaka aiki tare da halayen yau da kullun har zuwa 36%, tare da ramummuka har zuwa 44%.
  • Lokacin gina Python tare da zaɓin "-enable-optimizations", yanayin "-fno-semantic-interposition" yanzu yana kunna, wanda ke ba da damar hanzarta mai fassarar har zuwa 30% idan aka kwatanta da ginawa tare da "-enable-shared". ” zabin.
  • Hashlib da ssl modules sun ƙara tallafi don OpenSSL 3.0.0 kuma sun daina tallafawa nau'ikan OpenSSL waɗanda suka girmi 1.1.1.
  • An cire tsohon parser, wanda PEG (Parsing Expression Grammar) ya maye gurbinsa a reshe na baya. An cire tsarin mai tsarawa. An cire madaidaicin madauki daga asyncio API. An cire hanyoyin da aka yanke a baya. An cire ayyukan Py_UNICODE_str* masu sarrafa igiyoyin Py_UNICODE*.
  • An soke tsarin distutils kuma an shirya cire shi a cikin Python 3.12. Maimakon distutils, ana ba da shawarar amfani da saitin kayan aiki, marufi, dandamali, shutil, subprocess da sysconfig modules. Tsarin wstr a cikin PyUnicodeObject an soke shi kuma an shirya cire shi.

source: budenet.ru

Add a comment