Python Type Checker Papiso: Empty Container Inference
Maikutlo
Mewayz Team
Editorial Team
Hobaneng Lits'oants'o Tse se Nang Li Senya Li-Checkers tsa Mofuta oa Python - Le Seo U ka se Etsang ka Hona
Sistimi ea ho thaepa butle ea Python e holile haholo ho tloha ha PEP 484 e hlahisa malebela a mofuta ka 2015. Kajeno, limilione tsa bahlahisi ba itšetlehile ka li-static type checkers ho tšoara likokoana-hloko pele li qala tlhahiso. Empa ho na le sekhutlo se poteletseng, se ferekanyang sa mofuta oa mofuta o ntseng o hola le baenjiniere ba nang le boiphihlelo: setshelo se se nang letho se na le mofuta ofe? Ha u ngola x = [] ntle le tlhaloso, sehlahlobi sa mofuta oa hau se tlameha ho hakanya - le li-checkers tse fapaneng li hakanya ka tsela e fapaneng. Phapang ena e baka mathata a sebele bakeng sa lihlopha tse bolokang li-codebases tse kholo, moo ho fetola kapa ho kopanya mefuta ea ho hlahloba ho ka hlahisang makholo a liphoso tse sa lebelloang ka bosiu bo le bong.
Sengoliloeng sena se hlalosa kamoo li-checkers tse 'ne tse kholo tsa mofuta oa Python - mypy, pyright, pytype, le pyre - li sebetsanang le boitsebiso bo se nang letho ba sejana, hore na ke hobane'ng ha ba sa lumellane, le mekhoa efe e sebetsang eo u ka e sebelisang ho ngola Python e sireletsehileng ea mofuta ho sa tsotellehe khetho ea hau ea lisebelisoa.
Mathata a Motheo: Lits'oants'o tse se nang letho li na le Tlhaho e sa hlakang
Nahana ka mohala ona o se nang molato oa Python: liphetho = []. Na liphetho ke lethathamo[int]? Lethathamo la [str]? Lethathamo la le [dict[str, Any]]? Ntle le maemo a eketsehileng, ha ho na mokhoa oa ho tseba. Nako ea ho matha ea Python ha e tsotelle - manane a fapane ka tlhaho - empa bahlahlobi ba mofuta o tsitsitseng ba hloka ho abela mofuta oa konkreite ho mofuta o mong le o mong ho etsa mosebetsi oa bona. Sena se baka tsitsipano ea mantlha lipakeng tsa ho feto-fetoha ha maemo ha Python le tiisetso eo tlhahlobo e tsitsitseng e lekang ho fana ka eona.
Bothata bo kopana le bukantswe le disete. E se nang letho {} e arotsoe joalo ka dict, eseng sete, e leng se eketsang ho se utloisisehe ha syntactic holim'a mofuta oa mofuta o sa hlakang. Le lijana tse kentsoeng - nahana defaultdict(lethathamo) kapa liphetho = {k: [] bakeng sa k in keys} - sutumelletsa lienjineri tsa tlhahiso-leseling ho isa meeding ea tsona. Sehlahlobi se seng le se seng se iketselitse mokhoa oa sona oa ho hlahloba lintho, 'me liphapang li bohlokoa ho feta kamoo bahlahisi ba bangata ba hlokomelang.
Lits'ebetsong tsa tlhahiso e sebetsanang le mesebetsi ea 'nete - ebang ke CRM e sebetsanang le lirekoto tsa bareki, mochini oa li-invoice o hlahisang lisebelisoa, kapa lipeipi tse kopanyang metrics - lijana tse se nang letho li hlaha khafetsa joalo ka mekhoa ea ho qala. Ho etsa hore mefuta ea bona e fosahetse ha e hlahise litemoso tsa linter feela; e ka pata liphoso tsa 'nete tse thellang nakong ea ts'ebetso.
Mypy: Maikutlo a Felletseng ka Eng kapa Efe e sa Qobehang
Mypy, sehlahlobi sa khale ka ho fetesisa se amohetsoeng ka ho fetesisa sa Python, se nka mokhoa o bonolo oa lijana tse se nang letho. Ha e kopana le x = [] maemong a ts'ebetso, e leka ho ho chechisa qeto ea mofuta le ho fokotsa mofuta oa element ho tsoa ts'ebelisong e latelang. Haeba u ngola x = [] e lateloa ke x.append(42), mypy e tla fana ka lethathamo[int]. Leano lena la "kopanya" le sebetsa ka mokhoa o makatsang bakeng sa linyeoe tse otlolohileng moo sets'oants'o se nang le batho ba bangata ka har'a sebaka se ts'oanang.
Leha ho le joalo, boits'oaro ba mypy bo fetoha haholo ho latela maemo le maemo a thata. Sebakeng sa mojule (khoutu ea boemo bo holimo), kapa ha sets'oants'o se fetisetsoa tšebetsong e 'ngoe pele se tlatsitsoe, mypy hangata e oela ho lethathamong [Leha e le efe]. Tlas'a folakha ea --strict, sena se baka phoso, empa ka mokhoa oa kamehla se feta ka khutso. Sena se bolela hore lihlopha tse tsamaisang mypy ntle le mokhoa o thata li ka bokella linkho tse ngata tse ngotsoeng ka mokhoa o hlakileng tse sebetsang e le likheo tsa ho phonyoha ho tsoa ho sistimi ea mofuta, ho hlola sepheo sa eona.
Boitšoaro bo le bong bo poteletseng: liphetolelo tsa mypy pele ho 0.990 ka linako tse ling li ka fana ka lethathamo [Le sa tsejoe] ka hare ebe li atoloha ho lethathamong la[Leha e le efe] mosebetsing. Ka mor'a-0.990, tlhaloso e ile ea tiisoa, empa phetoho e ile ea senya palo e makatsang ea li-codebase tsa lefats'e tsa sebele tse neng li itšetlehile ka boitšoaro bo lumellang ntle le ho elelloa. Ena ke sehlooho se iphetang - liphetoho tse mabapi le sets'oants'o se se nang letho ke tse ling tsa lintlafatso tse sitisang haholo hobane lipaterone li fumaneha hohle.
Pyright: Tlhahiso e thata le Mofuta o "Sa Tsejoeng"
Pyright, e ntlafalitsoeng ke Microsoft le Pylance ea matla ho VS Code, e nka maikutlo a fapaneng haholo a filosofi. Ho e-na le ho khutlela ka khutso ho Leha e le efe, pyright e khetholla pakeng tsa E sa tsejoeng (mofuta o e-s'o tsejoe) le Leha e le efe (ho khetha ho tsoa ho mofuta oa ho hlahloba ka mokhoa o hlakileng). Ha u ngola x = [] ka mokhoa o thata oa pyright, e fana ka lenaneo [Le sa tsejoe] mme e tlaleha tlhahlobo, e u qobella ho fana ka tlhaloso.
Pyright e boetse e le mabifi ka ho e fokolang ka har'a scope. Haeba u ngola:
- x = [] e lateloe ke x.append("hello") — pyright infers lethathamo[str]
- x = [] e lateloa ke x.append(1) ebe x.append("hello") — pyright infers lethathamo[int | str]
- x = [] e fetisitsoe ka kotloloho ho tšebetso e lebelletsoeng lethathamo[int] — pyright infers lenane la[int] ho tsoa maemong a sebaka sa mohala
- x = [] e khutlile ho tsoa tšebetsong ntle le tlhaloso ea mofuta oa ho khutla — pyright e tlaleha phoso ho fapana le ho hakanya
Tlhahiso ena ea mahlakore a mabeli (ho sebelisoa ka bobeli tšebeliso e latelang le mefuta e lebelletsoeng ho tsoa litsing tsa mehala) e etsa hore pyright e nepahale ho feta mypy bakeng sa lijana tse se nang letho. The tradeoff is verbosity: pyright's strict mode lifolakha hoo e ka bang 30-40% litaba tse lingka mokhoa o tloaelehileng o sa tsejoeng oa codebase ha o bapisoa le mokhoa o thata oa mypy, ho latela tlhahlobo e tsoang litlalehong tse 'maloa tse bulehileng tsa ho falla. Bakeng sa lihlopha tse ahang litsamaiso tse thata tsa morao-rao - re re, sethala se laolang li-module tse 207 tse hokahaneng tse nkang CRM, payroll, le analytics - ho tiea ha pyright ho ts'oara mefokolo e poteletseng eo maikutlo a bonolo a ka e fosang.
Pytype le Pyre: Litsela tse sa Tsamaeang Hanyenyane
Google's pytype mohlomong e nka mokhoa o sebetsang ka ho fetesisa. Ho e-na le ho hloka litlhaloso kapa ho khutlela ho Eng kapa efe, pytype e sebelisatlhahlobo ea lenaneo lohle ho latela hore na setshelo se sebelisoa joang ho pholletsa le meeli ea ts'ebetso. Haeba u theha lethathamo le se nang letho mosebetsing o le mong 'me u le fetisetsa ho e' ngoe e kenyelletsang palo e feletseng, hangata pytype e ka infer lethathamo [int] ntle le litlhaloso ho hang. Khokahano ena ea li-cross-function e bitsa chelete e ngata haholo - pytype e lieha haholo ho feta mypy kapa pyright ho li-codebases tse kholo - empa e hlahisa lintlha tse fokolang tse fosahetseng khoutu e sa hlalosoang.
Pytype e boetse e hlahisa maikutlo a "mefuta e sa fellang" bakeng sa lijana tse se nang letho. [] e sa tsoa etsoa e fumana mofuta o itseng o ntseng o ntlafatsoa butle-butle ha sehlahlobi se kopana le tšebeliso e ngata. Sena se setle haholo empa se ka hlahisa melaetsa ea liphoso e ferekanyang ha mofuta o itseng o sa khone ho rarolloa ka botlalo, joalo ka ha sets'oants'o se se nang letho se feta lits'ebetsong tse 'maloa ntle le ho tlatsoa.
💡 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, hajoale, e atamela haufi le boits'oaro ba mypy empa e na le mefokolo e matla. Pyre e tšoara x = [] joalo ka lethathamo [le sa tsejoeng] 'me e hloka litlhaloso maemong a mangata. Moo pyre e ikarolang teng ke ts'ebetsong ea eona ea litlhare tse se nang letho tsa bukana e sebelisitsoeng joalo ka kwargs - mokhoa o tloaelehileng ho meralo ea tepo. Pyre e na le mabaka a khethehileng a ho nyenyefatsa mefuta ea dikishinari ho tsoa maemong a mantsoe a sehlooho, ho fokotsa moroalo oa litlatsetso ho li-codebases tse boima. Ka lebaka la hore boholo ba lits'ebetso tsa sejoale-joale tsa tepo li kenyelletsa tšebeliso e matla ea ho manolla bukantswe bakeng sa tlhophiso le kopo ya ho sebetsa, pragmatism ena e lefa meputso.
Phello ea Sebele ea Lefatše: Ha Inference Divergence Loma h2>
Liphapang lipakeng tsa li-checkers tsa mefuta li ka 'na tsa bonahala eka ke tsa thuto ho fihlela u li fumana ka har'a khoutu ea tlhahiso. Nahana ka mokhoa o tloaelehileng lits'ebetsong tsa khoebo: ho qala sebopeho sa data se tlalang ka maemo.
Lits'oants'o tse kotsi ka ho fetisisa tse se nang letho ha se mofuta oa li-checkers flag - ke tsona tse fetang ka khutso ka mofuta o itseng oa Leha e le ofe, tse lumellang data e sa lumellaneng ho bokellana ntle le tlhokomeliso ho fihlela ts'ebetso e tlase e senyeha ka nako ea ts'ebetso ka TypeError eo hoo e batlang e le ntho e ke keng ea khoneha ho khutlela ho tloha qalong.
Mohlala oa konkreite: sehlopha se qalileng sa fintech se tlalehile ho qeta matsatsi a mararo ho lokisa bothata ba tlhahiso moo lenane le se nang letho, le qaliloeng ts'ebetsong ea ts'ebetso ea litefo, le ileng la hlalosoa e le lethathamo[Any] ke mypy. Lenane lena le ne le lokela ho ba le lintho tse Decimal tsa chelete ea lichelete, empa tsela ea khoutu e ne e kenyelletsa boleng ba float. Maikutlo a bonolo a Mypy a ile a e lumella ka khutso. Phoso e ile ea hlaha feela ha liphoso tsa ho pota-pota lipalo tsa float li baka phapang ea $ 0.01 sehlopheng sa li-invoice tse 12,000. Haeba ba ne ba sebelisitse pyright ka mokhoa o thata, kapa ba hlalositse feela lenane le se nang letho joalo ka lenane la[Decimal], bothata bo ka be bo ile ba tšoaroa ka nako ea nts'etsopele.
Mewayz, moo sethala se sebetsanang le li-invoice, lipalo tsa meputso, le li-analytics tsa lichelete ho li-account tsa 138,000+ tsa basebelisi, mofuta ona oa lekhalo la polokeho ea mofuta ona ha se khopolo-taba - ke phapang lipakeng tsa meputso e nepahetseng le lipalo tse bitsang chelete e ngata. Taeo e thata ea ho ngola mabapi le ho qalisoa ha setshelo ke e 'ngoe ea litloaelo tse " tenang" tsa boenjiniere tse thibelang liketsahalo tse monate tsa tlhahiso.
Mekhoa e Molemo ka ho Fetisisa ea ho Qalisa nkho ea Tšireletso
Ho sa tsotelehe hore na sehlopha sa hau se sebelisa sehlahlobi sa mofuta ofe, ho na le maqheka a konkreite a ho felisa ho se hlaka ha sejana ka botlalo. Sepheo ke hore le ka mohla u se ke ua itšetleha ka maikutlo a lijana tse se nang letho - etsa hore mofuta o be o hlakileng e le hore khoutu ea hau e khonehe ho pholletsa le li-checkers tsohle 'me u se ke ua fetola boitšoaro ba maikutlo pakeng tsa liphetolelo.
- Kamehla hlalosa mefuta e fapaneng ea linkho tse se nang letho. Ngola liphetho: list[int] = [] sebakeng sa liphetho = []. Theko e nyane ea verbosity ha e na thuso ha e bapisoa le nako ea ho lokisa liphoso e bolokiloeng. Tloaelo ena e le 'ngoe e felisa hoo e ka bang 80% ea litaba tse se nang letho tsa linkho.
- Sebelisa mesebetsi ea feme bakeng sa lijana tse rarahaneng. Ho e-na le cache = {}, ngola mosebetsi o kang def make_cache() -> dict[str, list[UserRecord]]: khutlisetsa {}. Tlhaloso ea mofuta oa ho khutlisa e etsa hore mofuta o reriloeng e be o sa hlakang le ho iketsetsa litokomane.
- Khetha lihahi tse tlanyiloe ho feta litlhaku bakeng sa mefuta e sa reng letho. Ngola lintho: set[int] = set() ho fapana le ho itšetleha ka kutloisiso e behiloeng. Bakeng sa defaultdict le Counter, kamehla fana ka mofuta oa parameter: lipalo: Counter[str] = Counter().
- Lokisa mofuta o tiileng oa tlhahlobo ea mofuta oa hau bakeng sa khoutu e ncha. Ka bobeli li tšehetsa mypy le pyright ka faele kapa tokiso ea buka e ngoe le e ngoe. Lumella ho lekoa ka thata ho li-module tse ncha ha butle-butle u falla khoutu ea lefa. Sena se thibela ho bokellana ha linkho tse ncha tse tlantsoeng ka mokhoa o sa tobang.
- Eketsa papiso ea mofuta oa tlhahlobo ho phaephe ea hau ea CI. Ho tsamaisa mypy le pyright ho codebase ea hau ho fumana phapang e sa le pele. Haeba paterone e feta cheke e 'ngoe empa e hloleha e 'ngoe, ke sesupo sa hore mofuta ona ha oa totobala ka ho lekaneng.
Setšoantšo se Seholo: Ho hlahloba Mofuta e le Boikoetliso ba Sehlopha
Tlhahiso ea sets'oants'o se se nang letho qetellong ke microcosm ea phephetso e kholo ho sistimi ea mofuta oa Python: tsitsipano lipakeng tsa boiketlo le polokeho. Filosofi ea Python ea "kaofela re batho ba baholo ba lumelang" e sebetsa hantle bakeng sa prototyping le lingoliloeng, empa lits'ebetso tsa tlhahiso tse sebeletsang basebelisi ba likete li hloka litiiso tse matla. Taba ea hore li-checkers tsa mefuta e mene tse kholo ha li lumellane ka ntho ea mantlha joalo ka mofuta oa [] e totobatsa hore Python typing ecosystem e ntse e hola.
Bakeng sa lihlopha tsa boenjiniere tse ahang li-platform tse rarahaneng - hore na o laola li-microservices tse seng kae kapa sistimi e kopaneng e nang le li-module tse makholo tse hokahantsoeng joalo ka Mewayz's business OS - likeletso tse sebetsang li hlakile: u se ke oa itšetleha ka maikutlo a lijana tse se nang letho, khetha mofuta oa tlhahlobo 'me u e lokise hantle,' me u tšoare litlatsetso tsa mofuta joalo ka litokomane tse ka fumanehang mochining. Metsotso e mehlano e sebelisitsoeng ho ngola lenane la[Invoice] sebakeng sa [] e tla u bolokela lihora tsa ho lokisa liphoso ha codebase ea hau e lekanya.
Ha PEP 696 (litlhophiso tsa mofuta oa kamehla) le PEP 695 (mofuta oa parameter syntax) li tsoela pele ho lula liphetolelong tse ncha tsa Python, ergonomics ea ho ngola ka mokhoa o hlakileng e tla lula e ntlafala. Phapang pakeng tsa "annotated" le "unnotated" Python e tla fokotseha. Empa ho fihlela letsatsing leo, mefuta ea lijana tse hlakileng e ntse e le e 'ngoe ea mekhoa e phahameng ka ho fetisisa ea ROI ka har'a sesebelisoa sa moqapi oa Python - taeo e nyenyane e lefang tsoala e kopantsoeng mojulung o mong le o mong, lebelo le leng le le leng la lebelo, le phepelo e ngoe le e ngoe ea tlhahiso.
Haha Khoebo ea Hao ea Tsamaiso Kajeno
Ho tloha ho batho ba ikemetseng ho isa mekhatlong, Mewayz e matlafatsa likhoebo tse 138,000+ ka likarolo tse 207 tse kopaneng. Qala mahala, ntlafatsa ha o hola.
Theha Account Free → div>Lipotso Tse Botsoang Hangata
Hobaneng o sa khone ho thaepa li-checkers ho lumellana ka mofuta oa lenane le se nang letho?
Ha u ngola `x = []`, sehlahlobi sa mofuta se tlameha ho fana ka mofuta ntle le lintlha tse hlakileng. Li-checkers tse fapaneng li sebelisa maqheka a fapaneng: tse ling li fana ka `lethathamo [Lefe kapa lefe]` (lethathamo la eng kapa eng), ha tse ling li ka fana ka mofuta o hlakileng empa o fosahetse joalo ka `lenaneo[Ha ho letho]`. Ho haella hona ha maemo a akaretsang ke ka lebaka leo ba sa lumellaneng. Bakeng sa merero e sebelisang li-checkers tse ngata, ho se lumellane hona ho ka ba hlooho e bohloko, ho senya tlhahlobo ho sesebelisoa se seng se fetang ho se seng.
Ke mokhoa ofe o bonolo oa ho lokisa liphoso tsa sets'oants'o se se nang letho?
Tharollo e tobileng ka ho fetisisa ke ho fana ka tlhaloso ea mofuta o hlakileng. Sebakeng sa `my_list = []`, ngola `my_list: list[str] = []` ho bolela ka ho hlaka mofuta o reriloeng. Sena se tlosa ho se hlaka hohle bakeng sa tlhahlobo ea mofuta, ho netefatsa boits'oaro bo ts'oanang ho lisebelisoa tse fapaneng tse kang mypy, Pyright, le Pyre. Mokhoa ona oa khothaletsoa bakeng sa ho qala linkho tse se nang letho ho thibela liphoso tsa maikutlo.
Ke sebetsana joang le linkho tse se nang letho ka har'a litlhaloso tsa sehlopha?
Ena ke taba e atileng hobane litlhaloso ka har'a litlelase li hloka ho tšoaroa ka mokhoa o khethehileng. U tlameha ho sebelisa `ho tsoa __future__ litlatsetso tsa kantle` kapa tlhaloso ea `ClassVar` haeba lenane le reretsoe ho ba tšobotsi ea sehlopha. Mohlala, `class MyClass: my_list: ClassVar[lenane[str]] = []`. Ntle le sena, sehlahlobi sa mofuta se ka 'na sa thatafalloa ho utloisisa mofuta ka nepo, se lebisang liphosong.
Na ho na le lisebelisoa tse ka thusang ho laola litaba tsee tsa ho ngola mesebetsing e meholo?
E, li-checkers tsa mofuta o tsoetseng pele joalo ka Pyright (e leng matla a Pylance ho VS Code) li sebetsa hantle haholo ho sebetsana le maikutlo a rarahaneng. Bakeng sa li-codebases tse kholo, li-platform tse kang Mewayz (tse fanang ka li-module tsa tlhahlobo tse 207 bakeng sa $ 19 / khoeli) li ka fana ka tlhahlobo e tebileng, e tsitsitseng haholoanyane le ho thusa ho tiisa mekhoa ea litlhaloso ho sehlopha sohle sa hau, ho fokotsa ho se lumellane ho tšohloang sehloohong.
Try Mewayz Free
All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.
Get more articles like this
Weekly business tips and product updates. Free forever.
You're subscribed!
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 →Related articles
Hacker News
Mothers Defense (YC X26) Is Hiring in Austin
Mar 14, 2026
Hacker News
The Browser Becomes Your WordPress
Mar 14, 2026
Hacker News
XML Is a Cheap DSL
Mar 14, 2026
Hacker News
Please Do Not A/B Test My Workflow
Mar 14, 2026
Hacker News
How Lego builds a new Lego set
Mar 14, 2026
Hacker News
Megadev: A Development Kit for the Sega Mega Drive and Mega CD Hardware
Mar 14, 2026
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
We use cookies to improve your experience and analyze site traffic. Cookie Policy