Hacker News

Isbarbardhigga Nooca Python ee Hubiyaha: Tilmaamaha Koonteenarka Madhan

Faallo

13 min read Via pyrefly.org

Mewayz Team

Editorial Team

Hacker News

Waa maxay sababta weelasha faaruqa ah u jabiyaan nooca Python-Checkers - iyo waxa aad ka qaban karto

Nidaamka wax ku qorida qunyar socodka ah ee Python ayaa si weyn u qaan gaadhay tan iyo markii PEP 484 ay soo bandhigtay tilmaamo nooca sanadka 2015. Maanta, malaayiin horumariyayaal ah ayaa ku tiirsan jeegaga nooca taagan si ay u qabtaan cayayaanka ka hor inta aysan dhicin wax soo saarka. Laakin waxaa jira gees aan leexleexad lahayn oo jahawareer leh oo ka mid ah nidaamka nooca kaas oo wali kor u kaca xitaa injineerada khibrada leh: waa maxay nooca weelka maran uu leeyahay? Marka aad qortox = []adiga oo aan tafsiir la'aan, hubiyaha noocaagu waa inuu qiyaasaa - iyo hubiyeyaal kala duwan ayaa si kala duwan u qiyaasa. Kala duwanaanshuhu wuxuu u abuuraa dhibaatooyin dhab ah kooxaha ilaalinaya saldhigyada koodka waaweyn, halkaas oo beddelidda ama isku-darka noocyada hubinta ay soo saari karaan boqollaal khaladaad lama filaan ah habeenkii.

Maqaalkani waxa uu kala jejebiyaa sida afarta nooc ee Python ee ugu waaweyn - mypy, pyright, pytype, iyo pyre - u maamulaan fikradda weelka maran, sababta ay u diidan yihiin, iyo xeeladaha wax ku oolka ah ee aad qaadan karto si aad u qorto Python nooca-ammaan ah iyada oo aan loo eegin doorashadaada qalabaynta.

Dhibaatada Muhiimka ah: Weelasha faaruqa ah ayaa si dabiici ah madmadow u ah

Ka fiirso khadkan aan waxyeellada lahayn ee Python: natiijooyinka = []. Natiijooyinka ma yihiinliiska[int]? Aliiska[str]? Al[dict[str[str, Mid]]? Haddi aanay jirin macno dheeraad ah, ma jirto si dhab ah oo loo ogaado. Runtime Python ma danayso - liisasku waa kala duwanaansho dabiici ahaan - laakiin hubiyeyaasha nooca taagan waxay u baahan yihiin inay ku qoraan nooc la taaban karo doorsoome kasta si ay shaqadooda u qabsadaan. Tani waxay abuurtaa xiisad asaasi ah oo u dhaxaysa dabacsanaanta firfircoonida Python iyo dammaanadaha ay falanqaynta taagan isku daydo inay bixiso.

Dhibaatadu waxay ku biirtay qaamuusyo iyo qaybo. Madhan{}ayaa dhab ahaantii loo kala soocay sidadictee, ma ahaset, kaas oo ku daraya madmadowga guud ee heerka sare ee madmadowga nooca. Iyo weelasha buulka leh - ka fikir difaultdict(liiska)ama natiijooyinka = {k: [] loogu talagalay furayaasha} — ku riix matoorada fikradda xadkooda. Nooc kasta oo hubiyaha ah ayaa soo saaray heuristic u gaar ah, kala duwanaanshuhuna aad ayay uga muhiimsan yihiin inta ay horumariyayaashu ogaadaan.

Nidaamyada wax soo saarka ee ka baaraandega culeyska shaqada ee dhabta ah - hadday tahay CRM maaraynta diiwaannada macaamiisha, cutubka qaansheegta ee soo saaraya walxaha xariiqa, ama cabbirada isku-darka dhuumaha falanqaynta - weelasha madhan waxay si joogto ah ugu muuqdaan qaab bilow ah. In noocyadooda la qaldamo kaliya ma soo saarayaan digniino aan toos ahayn; waxay qarin kartaa dhiqlaha dhabta ah ee ku sii gudba wakhtiga runtime.

Mypy: Aragtida Dib-u-dhigista oo leh Mid Daahsoon

Mypy, hubiyaha nooca Python ee ugu da'da weyn uguna ballaaran, wuxuu qaataa hab dabacsan weel madhan. Marka ay la kulantox = [] marka la eego baaxadda shaqada, waxay isku daydaa inay dib u dhigto nooca go'aankaoo ay ka qiimayso nooca curiyaha isticmaalka dambe. Haddii aad qorto x = []oo ay ku xigtox.append(42), mypy waxa ay qiyaasi doontaa liiska[int]. Istaraatiijiyaddan "ku biirista" waxay si la yaab leh ugu shaqeysaa kiisaska tooska ah ee weelka ay ka buuxaan isla baaxadda.

Si kastaba ha ahaatee, dabeecadda mypy si weyn ayey isu beddeshaa iyadoo ku xiran macnaha guud iyo goobaha adag. Baaxadda moduleka (code heerka sare), ama marka weelka loo gudbiyo hawl kale ka hor inta aan la dajin, mypy inta badan waxay dib ugu dhacdaaliiska[Wax kasta]. Hoosta - adagcalanka, tani waxay dhalinaysaa qalad, laakiin qaabka caadiga ah waxay si aamusnaan ah u dhaaftaa. Tani waxay ka dhigan tahay in kooxaha ordaya mypy iyaga oo aan lahayn hab adag waxay ururin karaan daraasiin weel si aan toos ahayn loo tebiyay kuwaas oo u dhaqma sidii dillaaliinta nidaamka nooca, iyagoo jabinaya ujeeddadii laga lahaa.

Hal dabeecad gaar ah oo khiyaano leh: noocyada mypy ka hor 0.990 ayaa mararka qaarkood geli doona gudaha liiska[Lama yaqaan]kadibna u balaadhintaliiska[Wax kasta] ee hawsha. Ka dib 0.990, soo-jeedinta ayaa la adkeeyay, laakiin isbeddelku wuxuu jebiyey tiro la yaab leh oo ka mid ah codebases-ka dhabta ah ee adduunka oo ku tiirsanaa habdhaqanka oggolaanshaha iyada oo aan la ogeyn. Kani waa mawduuc soo noqnoqda - isbeddelada ku-meel-gaadhka weelka faaruqa ah ayaa ka mid ah cusboonaysiinta nooca hubinta ee aadka u khalkhalsan sababtoo ah qaab-dhismeedyadu waa meel walba.

Pyright: Soo jeedin adag iyo nooca "aan la garanayn"

Pyright, oo ay soo saartay Microsoft iyo Pylance ku awooda VS Code, waxay qaadataa mawqif falsafadeed oo ka duwan aasaas ahaan. Halkii ay si aamusnaan ah dib ugu noqon lahaydWax kasta, pyright waxa ay kala saartaa inta u dhaxaysaLama yaqaan(nooc aan wali la go'aamin) iyo Wax kasta Marka aad ku qorto x = [] habka adag ee pyright, waxa ay gelisaa liiska[Unknown]waxana ay ka warbixisaa ogaanshaha, taas oo kugu qasbaysa in aad bixiso tafaasiil.

Pyright sidoo kale aad ayuu uga gardaran yahayku soo koobida baaxadda gudaha. Haddii aad qorto:

  • x = []waxaa ku xigax.append("hello") — pyright infers liiska[str]
  • x = []waxaa ku xiga x. lifaaq(1)ka dibna x.append("hello") — pyright infers liiska[int | str]
  • x = []wuxuu si toos ah ugu gudbay hawl la filayoliiska[int] — pyright waxa ay liiska[int] ka soo qaadatay macnaha goobta wacitaanka
  • x = []ayaa ka soo noqday hawl aan lahayn tafsiir nooca soo noqoshada — pyright waxa ay sheegtaa khalad halkii ay ka qiyaasi lahayd
Tilmaantan laba-jiho ah (iyadoo la adeegsanayo isticmaalka dambe iyo noocyada la filayo ee goobaha wicitaanka) ayaa ka dhigaysa xaquuqda si gaar ah uga saxsan mypy ee weelasha madhan. Ganacsigu waa hadal: Habka adag ee pyright's calamada qiyaastii30-40% arrimo badanoo ku saabsan codebase caadiga ah oo aan la sheegin marka la barbar dhigo habka adag ee mypy, marka loo eego falanqaynta laga helay dhowr warbixin socdaal oo furan. Kooxaha dhisaya nidaamyada dhabarka adag - dheh, madal maamulaysa 207 qaybood oo isku xidhan oo ka kooban CRM, mushaar bixinta, iyo falanqaynta - adkaynta xuquuqul insaanka waxay qabtaa is-dheellitir la'aanta is-dhexgal ee is-dheelli-tirka ah ee dareenka dabacsani seegi doono.

Pytype iyo Pyre: Wadooyinka Safarka Yar

Nooca Google-ka ayaa laga yaabaa inuu qaato habka ugu macquulsan. Halkii laga rabay faafaahin ama dib loogu noqon lahaaWax kasta, pytype waxa ay isticmaashaa falanqaynta barnaamijka oo dhansi ay ula socoto sida weelka loogu isticmaalo xuduudaha shaqada. Haddii aad hal shaqo ku samayso liis madhan oo aad u gudbiso mid kale oo ku xidha tiro-koobyada, pytype waxa uu inta badan geli karaaliiska[int]iyada oo aan haba yaraatee wax tafsiir ah laga bixin. Tilmaantan shaqo-gudbiyeedka ah xisaab ahaan waa qaali - pytype aad ayuu uga gaabiyaa mypy ama pyright ee saldhigyada koodka waaweyn - laakiin waxay soo saartaa faa'iidooyin been abuur ah oo yar oo ku saabsan koodka aan la sheegin.

Pytype waxa kale oo uu soo bandhigayaa fikradda“noocyada qayb ahaan”ee weelasha madhan. Mid cusub oo []u sameeyay wuxuu helayaa nooc qayb ahaan si tartiib tartiib ah loo sifeeyay marka hubiyaha uu la kulmo isticmaal badan. Tani waa fikrad ahaan xarrago leh laakiin waxay soo saari kartaa farriimo khaldan oo jahawareer leh marka nooca qayb ahaan aan si buuxda loo xallin karin, sida marka weel madhan uu dhex maro hawlo badan oo aan waligeed la dajin.

💡 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, dhanka kale, waxa ay ku soo dhawaataa habdhaqanka mypy laakiin leh khaladaad adag. Pyre waxa uu ula dhaqmaax = [] sidiiliiska[aan la aqoon]oo u baahan tafatir inta badan. Meesha pyre ay ku kala duwan tahay lafteedu waxay ku jirtaa maarayntaQamuusyada qaamuuska ee faaruq ah ee loo isticmaalo sida kwargs - qaab caadi ah oo ka jira qaab-dhismeedka shabakadda. Pyre waxa uu leeyahay caqli-gaar ah oo kiis gaar ah si uu noocyada qaamuuska uga soo qaato macnaha doodaha ereyada muhiimka ah, yaraynta culayska tafatirka ee qaab-dhismeedka-culus koodbases. Marka la eego in badi arjiyada casriga ah ee shabakada ay ku lug leeyihiin isticmaalka culus ee qaamuuska furista habaynta iyo maaraynta codsiga, pragmatism-kani waxa uu bixiyaa faa'iidooyin.

Saamaynta-Dunida Dhabta Ah: Marka Kala-duwanaanshaha Farqigu Qaniinyo

Kala duwanaanshaha udhaxeeya nooca hubinta ayaa laga yaabaa inay u ekaato tacliin ilaa aad la kulanto koodka wax soo saarka. Tixgeli qaabka caadiga ah ee codsiyada ganacsiga: bilaabista qaab-dhismeedka xogta oo si shuruud ah u buuxsamay.

Weelasha ugu khatarta badan ee madhan maaha kuwa calanka jeegayaasha ah - waa kuwa si aamusan u dhaafa Nooca kastala soo qaatay, taas oo u oggolaanaysa in xogta aan ku habboonayn ay urursato digniin la'aan ilaa hawsha hoose ay ku dhacdo wakhtiga runtime-ga oo wataNoocaCilkaas oo aan suurtogal ahayn in dib loo raadiyo asalkiisii.

Tusaale la taaban karo: koox ka tirsan bilawga fintech ayaa soo warisay inay ku bixisaysaddex maalmood si ay u xalliyaan arrin wax soo saarkahalkaas oo liis madhan, oo lagu bilaabay hawl socodsiinta lacag bixinta, lagu qiyaasayliiska[Wax kasta]by mypy. Liistadu waxa ay ahayd in ay ka kooban tahayJajabkawalxaha lacagta qaddarka ah, laakiin dariiqa kood waxa uu ku lifaaqay qiyamkasabbaynayahalkii. Fikradda debecsan ee Mypy ayaa aamusnaan ku ogolaatay. Cayayaanka ayaa soo baxay kaliya markii khaladaadka xisaabinta sabbaynaysay ay keentay $0.01 farqi ah dufcaddii 12,000 ee qaansheegta. Haddi ay si adag u isticmaali lahaayeen pyright, ama ay si fudud ugu qeexi lahaayeen liiska madhan sidaliiska[ tobanlaha ], cayayaanka waxa la qaban lahaa wakhtiga horumarka.

Mewayz, halkaas oo madalku ka baarto qaansheegta, xisaabinta mushaharka, iyo falanqaynta maaliyadeed ee 138,000+ xisaabaadka isticmaalaha, nooca badqabka farqiga maahan aragti - waa farqiga u dhexeeya socodsiinta mushaar bixinta saxda ah iyo xisaabinta qaaliga ah. Anshaxa ku qorida adag ee ku wareegsan bilowga weelka waa mid ka mid ah dhaqamada injineernimada " caajiska badan " ee ka hortagaya shilalka wax soo saarka ee xiisaha leh.

Dhaqdhaqaaqyada ugu Wanaagsan ee Bilowga weelasha Difaaca

Iyadoo aan loo eegin nooca hubinta kooxdaadu isticmaasho, waxaa jira xeelado la taaban karo oo lagu baabi'inayo madmadowga weelka gabi ahaanba. Hadafku waa inaadan waligaa isku hallayn fikradda weelasha madhan - ka dhig nooca mid cad si koodkaagu u noqdo mid la qaadi karo dhamaan jeegagayaasha oo uu ka difaaco isbeddelada habdhaqanka ee u dhexeeya noocyada.

  1. had iyo jeer sharax doorsoomayaasha weelka maran. Kharashka hadal-haynta yar waa mid dayacan marka la barbar dhigo wakhtiga qaladka la badbaadiyay. Dhaqankan kaliya ayaa meesha ka saaraya qiyaastii 80% arrimaha faragelinta weelka maran.
  2. U isticmaal hawlaha warshadda weelasha adag. Sharaxaada nooca soo noqoshada ayaa ka dhigaysa nooca loogu talagalay mid aan madmadow lahayn oo iskii wax u qoro.
  3. Ka door bidi-dhisayaasha teebaysan ka door bidaaya suugaanta ee noocyada aan fudfudud ahayn. Wixii defaultdictiyo Counter, had iyo jeer bixi cabbirka nooca: counts: Counter[str] = Counter().
  4. Ku habee qaabka adag ee hubiyahaaga nooca kood cusub. Daree hubinta adag ee cutubyada cusub iyadoo si tartiib tartiib ah loo guurayo koodka dhaxalka ah. Tani waxay ka hortagtaa isku-ururinta weel cusub oo si dadban loo qoray.
  5. Ku dar isbarbardhigga nooca hubinta ee dhuumahaaga CI. Ku socodsiinta labada mypy iyo pyright ee codebase-kaaga waxay soo jiidataa kala duwanaansho hore. Haddi qaabku dhaafo hal jeegare balse uu guul daro mid kale, waa calaamad muujinaysa in nooca aanu si cad ugu filnayn.

Sawirka Ka Weyn: Nooca Hubinta Sida Ku-dhaqan Kooxeed

Tilmaamaha weelka faaruqa ah ayaa ugu dambeyntii ah microcosm caqabad weyn oo ku ah nidaamka nooca Python: xiisadda u dhexeysa ku habboonaanta iyo badbaadada. Falsafada Python ee ah "dhammaanteen waxaan ogolnahay dadka waaweyn" waxay si qurux badan ugu shaqeysaa soo saarista iyo qoraallada, laakiin nidaamyada wax soo saarka ee u adeegaya kumanaan isticmaaleyaal ah ayaa u baahan dammaanad adag. Xaqiiqda ah in afar nooc oo waaweyn oo hubinaya ay isku khilaafaan shay aasaas u ah nooca[]waxay hoosta ka xariiqday in nidaamka deegaanka wax ku qora ee Python uu weli qaangaarayo.

Kooxaha injineerada ee dhisaya goobo kakan - haddii aad maamulayso gacan muggeed oo adeeg yar ah ama nidaam isku dhafan oo leh boqollaal qaybood oo isku xidhan sida Mewayz's Business OS - talada wax ku oolka ahi waa mid toos ah: ha isku hallaynin fikradda weelasha madhan, soo qaado nooca jeegaga oo u habbee si adag, oo ula dhaqan tafaasiisha nooca sida dukumeenti la xaqiijin karo. Shanta daqiiqo ee lagu qaatay qoristaliiska[ qaansheegta]halkii[]
waxay kuu badbaadin doontaa saacado aad ku saxdo qaladka marka codebase-kaagu cabbiro.

Sida PEP 696 (beegyada nooca caadiga ah) iyo PEP 695 (nooca parameter syntax) ay sii wadaan inay ku soo degaan noocyo cusub oo Python ah, ergonomics-ka qorista cad ayaa sii wadi doona inay soo hagaagto. Farqiga u dhexeeya "sharaxaad" iyo "aan la sheegin" Python wuu soo yarayn doonaa. Laakin ilaa maalintaas, noocyada weelka ee cad ayaa ah mid ka mid ah dhaqamada ROI-ga ugu sareeya ee agabka soosaarayaasha Python - waa anshax yar oo bixisa dulsaarka guud ee qayb kasta, orod kasta, iyo wax soo saar kasta oo la geeyo.

dhiso ganacsigaaga OS maanta

laga bilaabo kuwa madaxa banaan ilaa wakaaladaha, Mewayz waxa ay awoodaa 138,000+ ganacsiyo leh 207 qaybood oo isku dhafan. Ku bilow bilaash, cusboonaysii markaad koraan.

Samee akoon bilaash ah →