Hacker News

Walmadaalchisuu Sakatta'aa Gosa Paayitoonii: Yaada Qabduu Duwwaa

Yaada

11 min read Via pyrefly.org

Mewayz Team

Editorial Team

Hacker News

Maaliif Qabduu Duwwaan Sakatta'oota Gosa Paayitoonii Cabsan — Fi Waa'ee Isaa Maal Gochuu Dandeessu

Sirni barreessuu suuta suutaan Paayitoon erga PEP 484 bara 2015tti akeekkachiisa gosa jalqabee kaasee baay'ee bilchaateera.Har'a, hojjettoonni miliyoonaan lakkaa'aman osoo oomisha hin rukutin dura dogongora qabachuuf sakatta'iinsa gosa istaatiksii irratti hirkatu. Garuu golee haxxummaan, kan nama mufachiisu sirna gosaa ammallee injinaroota muuxannoo qaban illee gufachiisu jira: meeshaan duwwaan gosa akkamii qaba? Yeroo x = [] yaadannoo malee barreessitu, sakatta'aan akaakuu kee tilmaamu qaba — sakatta'aan adda addaa immoo tilmaama adda addaa. Garaagarummaan kun gareewwan kuusdeetaa koodii gurguddoo kunuunsaniif rakkoo dhugaa uuma, bakka sakatta'toota gosa jijjiiruun ykn walitti makuun dogoggora hin eegamne dhibbaan lakkaa'aman halkan tokkotti mul'isuu danda'u.

Barreeffamni kun akkaataa sakatta'oonni gosa Paayitoon gurguddoon afran — mypy, pyright, pytype, fi pyre — yaada qabduu duwwaa itti qaban, maaliif akka walii hin galle, fi filannoo meeshaa kee osoo hin ilaalin Paayitoon gosa-nageenya qabu barreessuudhaaf tooftaalee qabatamaa akkamii fudhachuu akka dandeessu caccabsa.

Rakkoo Ijoo: Qabduu Duwwaa Uumamaan Wal-xaxaa dha

Sarara miidhaa hin qabne Paayitoon kana ilaali: results = []. bu'aan tarree[int]dhaa? tarree[str]? tarree[dict[str, Kamuu]]? Yaada dabalataa malee, dhugaadhaan karaan itti beektu hin jiru. Yeroon gaggeeffama Paayitanii dhimma hin qabu — tarreewwan uumamaan garaagarummaa qabu — garuu sakatta'toonni gosa istaatiksii hojii isaanii hojjechuuf jijjiiramaa hundaaf gosa qabatamaa ramaduu qabu. Kunis waldhabdee bu'uuraa kan uumu yoo ta'u, jijjiirama daayinamikii Paayitanii fi wabiiwwan xiinxalli istaatiksii kennuuf yaalu.

Rakkoon galmee jechootaa fi tuuta waliin wal-xaxaa ta'a. {} duwwaan dhugumatti akka dicttti kan qoqqoodamu malee akka settti miti, kunis walxaxiinsa sadarkaa gosaa gubbaatti walxaxiinsa galumsaa dabalata. Akkasumas qabduuwwan man'ee qaban — defaultdict(list) ykn results = {k: [] furtuuwwan keessatti k'f} yaadi — motoroota yaada xumuraa gara daangaa isaaniitti dhiibu. Tokkoon tokkoon gosa sakatta'aa heuristics mataa isaa kan qopheesse yoo ta'u, garaagarummaan isaas kan irra caalaan developers hubatan caalaa guddaadha.

Sirnoota oomishaa fe'iinsa hojii dhugaa adeemsisan keessatti — CRM galmee maamilaa qabatu, moojuuliin invooyisii wantoota sararaa maddisiisu, ykn sarara ujummoo xiinxala safartuuwwan walitti qabu haa ta'u — qabduuwwan duwwaan yeroo hunda akka shaakala jalqabsiisuutti mul'atu. Gosa isaanii dogoggoraan argachuun akeekkachiisa linter qofa hin fidu; dogongora dhugaa kanneen gara yeroo gaggeeffamaatti siqan haguuggachuu danda'a.

Mypy: Yaada Tursiifame Kamiyyuu Icciitii Waliin

Mypy, sakatta'aan gosa Paayitoon isa durii fi bal'inaan fudhatame, qabduu duwwaa irratti mala salphaa fudhata. Yeroo x = [] bal'ina faankishinii irratti qunnamu, murtee akaakuu yeroo biraatti dabarsuu fi gosa elementii fayyadama itti aanu irraa hubachuuf yaala. Yoo x = [] itti aansee x.append(42) barreessite, mypy tarree[int] ni yaada. Tooftaa "walitti makamuu" kun haalawwan qajeeloo bakka qabduun daangaa walfakkaataa keessatti guutameef haala ajaa'ibaa ta'een hojjeta.

Haa ta'u malee, amala mypy haala haalaa fi qindaa'ina cimina irratti hundaa'uun baay'ee jijjiirama. Daangaa moojuulii irratti (koodii sadarkaa olaanaa), ykn yeroo qabduun osoo hin guutin gara faankishinii biraatti darbu, mypy yeroo baayyee gara tarree[Any]tti deebi'a. Alaabaa --strict jalatti, kun dogongora kakaasa, garuu haalata durtii keessatti callisee darba. Kana jechuun gareewwan mypy haalata cimaa malee hojjetan qabduuwwan kudhan kudhan kudhan kudhan kan akka haachi miliquu sirna akaakuu irraa hojjetan kuusuu danda'u, kaayyoo isaa injifatu.

Amala addatti dhokataa tokko: gosootni mypy 0.990 dura yeroo tokko tokko tarree[Hin beekamne] keessoodhaan infer gochuu fi sana booda ramaddii irratti gara tarree[Any]tti bal'isu turan. Booda-0.990, yaadni xumuraa cimee ture, garuu jijjiiramni kun lakkoofsa ajaa'ibsiisaa koodii addunyaa dhugaa kanneen osoo hin hubatin amala hayyamaa irratti hirkataa turan cabseera. Kun mata duree irra deddeebi'amee mul'atudha — jijjiiramni gara yaada qabduu duwwaatti fooyya'iinsa sakatta'iinsa gosa baay'ee jeequmsa uumuu keessaa tokkodha sababiin isaas shaakala baay'ee bakka hundatti argama.

Pyright: Yaada Cimaa fi Gosa "Hin Beekamne"

Pyright, Microsoftiin kan hojjetamee fi VS Code keessatti Pylance humna kan kennu, ejjennoo falaasama bu'uuraan adda ta'e qaba. Callisee gara Anytti deebi'uu mannaa, pyright Hin beekamne (gosa hanga ammaatti hin murtoofne) fi Any (sakatta'iinsa gosaa keessaa ba'uu ifatti) gidduutti adda baasa. Yeroo x = [] haalata cimaa pyright keessatti barreessitu, tarree[Hin beekamne] yaada fi adda baasuu gabaasa, yaadannoo akka kennitu si dirqisiisa.

Pyright waa'ee daangaa keessatti dhiphachuu irrattis caalaatti aggaammii qaba. Yoo barreessite:

    jechuun ni danda’ama
  • x = [] itti aansee x.append("hello") — pyright tarree[str]
  • yaada
  • x = [] itti aansee x.append(1) sana booda x.append("hello") — pyright tarree[int | str]
  • jechuun ni danda’ama
  • x = [] kallattiin gara faankishinii tarree[int] eegutti darbe — pyright tarree[int] haala waamicha-saayitii
  • irraa yaada
  • x = [] faankishinii irraa deebi'e yaadannoo akaakuu deebi'uu malee — pyright tilmaama
  • osoo hin taane dogongora gabaasa
jechuun ni danda’ama

Inference kallattii lamaa kun (itti fayyadama itti aanu fi gosoota eegamu lamaan fayyadamuun) pyright qabduu duwwaadhaaf mypy caalaa sirrii akka ta'u taasisa. Daldalli dubbii baay'eedha: haalli cimaan pyright tilmaamaan 30-40% dhimmoota baay'ee kuusdeetaa koodii idilee kan hin ibsamne irratti haalata cimaa mypy wajjin wal bira qabamee yoo ilaalamu, akka xiinxala gabaasa godaansa madda banaa hedduu irraa argameetti. Gareewwan sirna duubaa walxaxaa ijaaraniif — jedhaa, waltajjii moojuulota walitti hidhaman 207 kan CRM, kaffaltii, fi xiinxala hammate bulchu — ciminni pyright walsimsiisuun wal hin simne interfeesii xixiqqoo kan inference lallaafaan darbu qaba.

Pytype fi Pyre: Daandiiwwan Imala Xiqqoo

Paayitaayippiin Google tarii mala hunda caalaa hojiirra ooluu danda'u fudhata. Yaadannoowwan barbaaduu ykn gara Anytti deebi'uu mannaa, pytype akkaataa qabduun daangaa faankishinii qaxxaamuree itti fayyadamu hordofuuf xiinxala sagantaa guutuu fayyadama. Yoo tarree duwwaa faankishinii tokko keessatti uumtee fi gara kan biraa kan lakkoofsota guutuu dabaluutti dabarsite, pytype yeroo baay'ee tarree[int] tasuma yaadannoo tokko malee infer gochuu danda'a. Inferensiin dalagaa qaxxaamuraa kun shallaggii irratti qaala'aa dha — pytype mypy ykn pyright caalaa codebases gurguddoo irratti baay'ee suuta jedha — garuu koodii hin ibsamne irratti pozaatiivii sobaa xiqqaa oomisha.

Pytype akkasumas yaad-rimee "gosoota gartokkee" qabduu duwwaadhaaf ni seensisa. [] haaraa uumame gosa gartokkee kan akkuma sakatta'aan fayyadama dabalataa qunnamu tartiibaan qulqullaa'u argata. Kun yaad-rimeedhaan bareedaadha garuu yeroo gosti gartokkee guutummaatti furmaata argachuu hin dandeenyetti ergaawwan dogongoraa burjaaja'aa uumuu danda'a, kan akka yeroo qabduu duwwaan osoo gonkumaa hin guutamiin dalagaalee hedduu keessa yaa'u.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Meta's pyre, gama biraatiin, amala mypy'tti dhihoo ta'ee garuu durtii cimaa ta'een hews godha. Pyre x = [] akka tarree[unknown]tti ilaala fi haalawwan baay'ee keessatti yaadannoo barbaada. Bakki pyre adda of godhu qabachuu isaa keessatti jechoota galmee jechootaa duwwaa akka kwargstti fayyadaman — akkaataa beekamaa unkaalee weebii keessatti. Pyre loojikii haala addaa qaba, gosoota galmee jechootaa haalawwan falmii jechoota furtuu irraa hubachuuf, ba'aa yaadannoo kuusdeetaa koodii furtuu-ulfaataa keessatti hir'isa. Irra caalaan aplikeeshiniiwwan weebii ammayyaa qindeessaa fi gaaffii qabachuuf jecha galmee jechootaa hiikuu baay'ee kan of keessaa qaban ta'uu isaanii yoo ilaalle, hojiirra ooluu danda'uun kun bu'aa kaffala.

Dhiibbaa Addunyaa Dhugaa: Yeroo Inference Divergence Cinitu

Garaagarummaan sakatta'toota gosa gidduu jiru hanga kuusdeetaa koodii oomishaa keessatti mudattutti kan barnootaa fakkaachuu danda'a. Mee akkaataa waliigalaa aplikeeshiniiwwan daldalaa keessatti ilaali: caasaa deetaa kan haal-dureedhaan guutamu jalqabsiisuu.

Qabxii duwwaa balaa guddaa qaban kanneen alaabaa gosa sakatta'an miti — isaan kanneen callisanii akaakuu Kamiyyuu yaadame waliin darbaniidha, hanga faankishiniin gadi bu'aa yeroo gaggeeffama TypeError kan gara ka'umsa isaatti deebi'ee hordofuun hin danda'amnetti kufetti akeekkachiisa malee akka kuufamu hayyamuudha.

jedhamuun beekama

Fakkeenya qabatamaa: gareen jalqabbii fintech tokko guyyoota sadii dhimma oomishaa sirreessuu bakka tarreen duwwaa, faankishinii adeemsa kaffaltii keessatti jalqabame, mypyn tarree[Any] jedhamee yaadameetti dabarsuu isaa gabaaseera. Tarreen kun hamma maallaqaaf wantoota Kurnaffaa qabaachuu qaba ture, garuu daandii koodii bakka isaa gatiiwwan float dabalaa ture. Mypy's lenient inference callisee hayyame. Rakkoon kun kan mul'ate yeroo dogongorri naanneffamuu herrega float keessatti garaagarummaa $0.01 batch invoice 12,000 irratti fide qofa. Osoo haalata cimaa keessatti pyright fayyadamanii, ykn salphaatti tarree duwwaa akka tarree[Decimal]tti yaadannoo godhanii, dogongorri yeroo misoomaa qabama ture.

Mewayz keessatti, bakka waltajjiin kun invoice, shallaggii mindaa, fi xiinxala faayinaansii herrega fayyadamtootaa 138,000+ irratti adeemsisu, qaawwi gosa-nageenyaa kun ti'oorii miti — garaagarummaa fiigicha mindaa sirrii fi irra deebiin shallaggii baasii guddaa baasu gidduu jiruudha. Naamusni barreessuu cimaan naannoo jalqabbii qabduu gochaalee injinariingii "nuffisiisaa" taateewwan oomishaa gammachiisaa ittisan keessaa isa tokkodha.

Muuxannoowwan Gaggaarii Jalqaba Qabduu Ittisaa

Gareen kee gosa sakatta'aa kam iyyuu yoo fayyadame, wal-xaxiinsa qabduu duwwaa guutummaatti dhabamsiisuuf tooftaaleen qabatamaa ta'an jiru. Galmi isaa qabduu duwwaa ta'eef gonkumaa yaada xumuraa irratti hin hirkanne — gosti ifa godhi akka koodii kee sakatta'oota hunda irratti socho'uu fi jijjiirama amala yaada xumuraa gosoota gidduutti ta'u irraa bilisa ta'a.

    jechuun ni danda'ama
  1. Yeroo hunda jijjiiramoota qabduu duwwaa yaadannoo kenni. bu'aa barreessi: tarree[int] = [] bakka bu'aa = []. Baasii verbosity xiqqaan yeroo debugging qusatamee wajjin wal bira qabamee yoo ilaalamu xiqqaadha. Gochi tokkichi kun dhimmoota yaada xumuraa qabduu duwwaa tilmaamaan %80 dhabamsiisa.
  2. Fankishiniiwwan warshaa qabduu walxaxaa fayyadami. Bakka cache = {}, faankishinii akka def make_cache() -> dict[str, list[UserRecord]] barreessi: {} deebisi. Yaadannoo akaakuu deebi'uu akaakuu yaadame akka hin shakkamnee fi ofumaan galmeessu taasisa.
  3. Ijaarsitoota barreeffame akaakuuwwan xiqqaa hin taaneef jecha jechaatti filadhu. Yaada hubannoo tuuta irratti hirkatuu irra wantoota: set[int] = set() barreessi. defaultdict fi Lakkaawwii tiif, yeroo hunda qaree akaakuu kenni: lakkoofsa: Lakkaawwii[str] = Lakkaawwii().
  4. Haala cimaa sakatta'aa akaakuu keetii koodii haaraaf qindeessi. Mypy fi pyright lamaan isaanii qindeessaa faayilii tokkoof ykn galmee tokkoof ni deeggaru. Koodii hambaa suuta suutaan osoo godaansituu moojuulota haaraa irratti sakatta'iinsa cimaa dandeessisi. Kunis kuufama qabduu haaraa gosa implicitly-typed dhorka.
  5. Walmadaalchisuu gosa sakatta'aa sarara ujummoo CI kee irratti dabali. Mypy fi pyright lamaan koodii beezii kee irratti hojjechuun addaan ba'iinsa yaada xumuraa dursee qabata. Yoo paateeniin tokko sakatta'aa tokko darbe garuu kan biraa kufe, mallattoo gosti sun ifa gahaa akka hin taane agarsiisudha.
jechuun ni danda’ama

Suuraa Guddaa: Akka Shaakala Gareetti Sakatta'iinsa Gosa

Inferensiin qabduu duwwaa dhumarratti maaykirookoosmii qormaata guddaa sirna gosa Paayitanii keessatti: waldhibdee mijataa fi nageenya gidduu jiru. Falaasamni Paayitoon "hundi keenya ga'eessota waliigaltee qaban" jedhu piroototaayipii fi iskiriiptiidhaaf haala bareedaa ta'een hojjeta, garuu sirnoonni oomishaa fayyadamtoota kumaatamaan lakkaa'aman tajaajilan wabii cimaa barbaadu. Sakatta'oonni akaakuu gurguddoon afur waan bu'uuraa akka gosa [] irratti walii galuu dhabuun isaanii sirni ikoo barreessuu Paayitoon ammallee bilchaachaa akka jiru hubachiisa.

Gareewwan injinariingii waltajjiiwwan walxaxaa ijaaraniif — maaykiroosarvisii muraasa yookiin sirna walitti makamaa moojuulota dhibbaan lakkaa'aman walitti hidhaman kan akka OS daldalaa Mewayz qabu bulchaa jirtanis — gorsi qabatamaan qajeelaa dha: qabduu duwwaadhaaf yaada xumuraa irratti hin hirkatin, sakatta'aa gosa filadhuutii cimsitee qindeessii, fi yaadannoowwan gosaa akka galmee akka ta'etti ilaali maashiniin mirkanaa’uu danda’a. Daqiiqaawwan shanan [] osoo hin taane tarree[Invoice] barreessuudhaaf dabarsitu yeroo kuusni koodii kee iskeelii ta'u sa'aatii sirreeffama si qusata.

Akkuma PEP 696 (parameetaroota akaakuu durtii) fi PEP 695 (parameetaroota gosa) gosoota Paayitoon haaraa keessatti bu'uu itti fufan, ergonoomiksii barreessuu ifa ta'e fooyya'uu itti fufa. Qaawwi "annotated" fi "unannotated" Python gidduu jiru ni dhiphata. Garuu hanga guyyaa sanaatti, gosootni qabduu ifa ta'an gochaalee ROI olaanaa qaban keessaa tokko ta'ee hafa meeshaa qopheessaa Paayitoon keessatti — naamusa xiqqaa moojuulii hunda, fiigicha hunda, fi bobbii oomishaa hunda irratti dhala walmakaa kaffalu.

OS Daldala Keessan Har'a Ijaadhaa

Hojjetoota bilisaa irraa kaasee hanga ejensiiwwanitti, Mewayz moojuulota walitti makaman 207n daldala 138,000+ humna kenna. Bilisaa jalqabi, yeroo guddattu fooyyessi.

Akkaawuntii Bilisaa Uumuu →
jechuun ni danda’ama

Gaaffilee Irra Deddeebiin Gaafataman

Maaliif sakatta'oonni barruu gosa tarree duwwaa irratti walii galuu hin danda'an?

Yeroo `x = []` barreessitu, sakatta'aan akaakuu gosa akeekkachiisa ifa ta'e hin qabne tilmaamu qaba. Sakatta'oonni adda addaa tooftaalee adda addaa fayyadamu: tokko tokko `tarree[Any]` (tarree waan kamiyyuu) kan yaadan yoo ta'u, kaan immoo gosa adda ta'e garuu sirrii hin taane kan akka `tarree[Hin jiru]` tilmaamu danda'u. Ulaagaa waliigalaa dhabuun kun kan isaan walii hin galleef. Pirojektoota sakatta'iinsa hedduu fayyadamaniif, wal-hin simne kun mataa dhukkubbii guddaa ta'uu danda'a, xiinxala meeshaa tokko keessatti kan biraa keessa darbu cabsuu.

Dogoggora qabduu duwwaa sirreessuuf karaan salphaan maali?

Furmaanni hunda caalaa qajeelaan yaadannoo akaakuu ifa ta'e kennuudha. Bakka `tarree_koo = []`, gosa yaadame ifatti labsuuf `tarree_koo: tarree[str] = []` barreessi. Kunis walxaxiinsa hunda sakatta'aa akaakuutiif ni haqa, amala walfakkaataa meeshaalee adda addaa kan akka mypy, Pyright, fi Pyre irratti mirkaneessa. Gochi kun dogongora yaada xumuraa ittisuuf jalqabbii qabduu duwwaa hundaaf ni gorfama.

Hiika gitaa keessaa qabduu duwwaa akkamittan qaba?

Kun dhimma barame dha sababni isaas yaadannoowwan gita keessaa qabannaa addaa barbaadu. Galchuu `from __future__ import annotations` ykn yaadannoo `ClassVar` fayyadamuu qabda yoo tarreen amaloota gitaa ta'uuf yaadame. Fakkeenyaaf, `gita Gita Koo: tarree_koo: GitaaVar[tarree[str]] = []`. Kana malee, sakatta'aan akaakuu akaakuu sirritti tilmaamuuf rakkachuu danda'a, kunis dogongora fida.

Meeshaaleen dhimmoota barreessuu kana pirojektoota gurguddoo keessatti bulchuuf gargaaran jiruu?

Eeyyee, sakatta'oonni gosa sadarkaa olaanaa kan akka Pyright (kan VS Code keessatti Pylance humna kennu) keessumaa yaada walxaxaa qabachuu irratti gaarii dha. Bu'uura koodii gurguddoof, waltajjiiwwan akka Mewayz (moojuulota xiinxala 207 $19/ji'atti dhiyeessuu) sakatta'iinsa akaakuu gadi fagoo, walfakkaatu kennuu fi shaakala yaadannoo garee kee guutuu keessatti dirqisiisuuf gargaaruu danda'a, wal-hin simne barruu keessatti mari'atame salphisa.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime