Ụzọ iji pịnye akara koodu Python 4 nde. Akụkụ 3

Anyị na-ewetara gị nlebara anya akụkụ nke atọ nke ntụgharị ihe gbasara ụzọ Dropbox mere mgbe ị na-emejuputa ụdị nyocha ụdị koodu Python.

Ụzọ iji pịnye akara koodu Python 4 nde. Akụkụ 3

→ Akụkụ ndị gara aga: mbụ и nke abuo

Na-eru ahịrị nde anọ nke koodu etinyere

Ihe ịma aka ọzọ (na nke abụọ na-enwekarị nchegbu n'etiti ndị a nyochara n'ime) bụ ịba ụba koodu nke ụdị ndenye ego kpuchiri na Dropbox. Anyị anwalela ụzọ dị iche iche iji dozie nsogbu a, site n'ịdị na-eto eto nha nke koodu codebase na-elekwasị anya na mbọ ndị otu mypy na ntinye ụdị akpaghị aka na-agbanwe agbanwe. N'ikpeazụ, ọ dị ka ọ dịghị usoro mmeri dị mfe, ma anyị nwere ike nweta ọganihu ngwa ngwa na olu nke koodu nkọwa site na ijikọta ọtụtụ ụzọ.

N'ihi ya, nnukwu ebe nchekwa Python anyị (nwere koodu azụ) nwere ihe fọrọ nke nta ka ọ bụrụ ahịrị koodu nde 4. Emechara ọrụ na ntinye koodu static n'ihe dị ka afọ atọ. Mypy ugbu a na-akwado ụdị mkpesa mkpuchi koodu dị iche iche na-eme ka ọ dị mfe nyochaa ọganihu dee. Karịsịa, anyị nwere ike iwepụta akụkọ na koodu nwere mgbagwoju anya n'ụdị, dịka ọmụmaatụ, iji otu ụdị eme ihe nke ọma. Any na nkọwa nke enweghị ike ịnwapụta, ma ọ bụ ihe dị ka ibubata ọba akwụkwọ ndị ọzọ na-enweghị ụdị nkọwa. Dịka akụkụ nke ọrụ iji kwalite izi ezi nke ụdị nlele na Dropbox, anyị nyere aka kwalite ụdị nkọwa (nke a na-akpọ faịlụ stub) maka ụfọdụ ọba akwụkwọ mepere emepe na-ewu ewu na ebe nchekwa Python etiti. apịpụtara.

Anyị mebere (ma hazie ya na PEP ndị na-esote) atụmatụ ọhụrụ nke ụdị sistemụ na-enye ohere ka ụdịdị dị mma maka ụfọdụ ụkpụrụ Python. Ihe atụ pụtara ìhè nke a bụ TypeDict, nke na-enye ụdị maka akwụkwọ ọkọwa okwu JSON-dị ka nke nwere igodo eriri edoziri, nke ọ bụla nwere uru nke ụdị nke ya. Anyị ga-anọgide na-agbasa ụdị usoro. Nzọụkwụ anyị na-esote ga-abụ ịkwalite nkwado maka ike ọnụọgụgụ Python.

Ụzọ iji pịnye akara koodu Python 4 nde. Akụkụ 3
Ọnụọgụ nke ahịrị koodu nkọwapụta: ihe nkesa

Ụzọ iji pịnye akara koodu Python 4 nde. Akụkụ 3
Ọnụọgụ nke ahịrị koodu nkọwapụta: onye ahịa

Ụzọ iji pịnye akara koodu Python 4 nde. Akụkụ 3
Ngụkọta ọnụọgụ ahịrị koodu nkọwapụta

Nke a bụ nkọwapụta nke isi ihe ndị anyị mere iji mee ka ọnụọgụ koodu nkọwapụta dị na Dropbox:

Mkpebi nkọwa. Anyị ji nke nta nke nta mụbaa ihe achọrọ maka ike ịkọwa koodu ọhụrụ. Anyị malitere site na ndụmọdụ linter na-atụ aro ịgbakwunye nkọwa na faịlụ ndị nweburu nkọwa. Ugbu a anyị chọrọ ụdị nkọwa na faịlụ Python ọhụrụ yana n'ọtụtụ faịlụ dị adị.

Ịpị akụkọ. Anyị na-eziga ndị otu akụkọ kwa izu maka ọkwa nke itinye koodu ha wee nye ndụmọdụ maka ihe ekwesịrị ịkọwapụta na mbụ.

Mmasị nke mypy. Anyị na-ekwu maka mypy na mmemme ma na-agwa ndị otu dị iche iche iji nyere ha aka ibido nkọwapụta ụdị.

Ntụli aka. Anyị na-eme nyocha ndị ọrụ oge ụfọdụ iji chọpụta nsogbu ndị bụ isi. Anyị dị njikere ịga nke ọma n'idozi nsogbu ndị a (ọbụlagodi ịmepụta asụsụ ọhụrụ iji mee ngwa ngwa mypy!).

Arụmọrụ. Anyị emeela ka arụmọrụ mypy dịkwuo mma site na iji daemon na mypyc. Emere nke a iji mee ka ihe ndị na-adịghị mma na-ebilite n'oge usoro nkọwa, na iji nwee ike ịrụ ọrụ na nnukwu koodu.

Mmekọrịta na ndị ndezi. Anyị arụgoro ngwaọrụ iji kwado ịgba ọsọ mypy na ndị ndezi ama ama na Dropbox. Nke a gụnyere PyCharm, Vim na koodu VS. Nke a mere ka usoro ịkọwapụta koodu ahụ dị mfe ma lelee ọrụ ya. Ụdị omume ndị a na-emekarị mgbe a na-akọwa koodu dị adị.

Nyocha static. Anyị mepụtara ngwá ọrụ iji gosipụta mbinye aka ọrụ site na iji ngwaọrụ nyocha static. Ngwá ọrụ a nwere ike ịrụ ọrụ naanị n'ọnọdụ ndị dị mfe, mana o nyeere anyị aka ịbawanye mkpuchi ụdị koodu anyị n'enweghị nnukwu mbọ.

Nkwado maka ọba akwụkwọ ndị ọzọ. Ọtụtụ ọrụ anyị na-eji ngwa ngwa SQLAlchemy. Ọ na-erite uru site na ike ike nke Python na ụdị PEP 484 enweghị ike ịṅomi ozugbo. Anyị, dịka PEP 561 siri dị, mepụtara faịlụ stub kwekọrọ wee dee ngwa mgbakwunye maka mypy (isi mmalite), nke na-eme ka nkwado SQLAlchemy dịkwuo mma.

Ihe isi ike anyị zutere

Ụzọ gaa na ahịrị nde 4 nke koodu pịnyere anaghị adịịrị anyị mfe mgbe niile. N'ụzọ a, anyị zutere ọtụtụ oghere ma mehie ọtụtụ ihe. Ndị a bụ ụfọdụ nsogbu anyị nwetara. Anyị nwere olileanya na ikwu banyere ha ga-enyere ndị ọzọ aka izere ụdị nsogbu ahụ.

Faịlụ na-efu. Anyị malitere ọrụ anyị site na ịlele naanị obere faịlụ. enyochaghị ihe ọ bụla etinyeghị na faịlụ ndị a. Agbakwunyere faịlụ na ndepụta nyocha mgbe nkọwa mbụ pụtara n'ime ha. Ọ bụrụ na ihe e si na modul nke dị n'èzí nke nkwenye, mgbe ahụ, anyị na-ekwu maka ịrụ ọrụ na ụkpụrụ dị ka. Any, nke a na-anwalebeghị ma ọlị. Nke a butere mfu nke izi ezi nke ederede, ọkachasị n'oge mmalite nke mbugharị. Usoro a na-arụ ọrụ nke ọma nke ọma ruo ugbu a, ọ bụ ezie na ọnọdụ a na-ahụkarị bụ na ịgbakwunye faịlụ na njedebe nke nyochaa na-ekpughe nsogbu n'akụkụ ndị ọzọ nke codebase. N'okwu kachasị njọ, mgbe a na-ejikọta mpaghara abụọ dịpụrụ adịpụ nke koodu, nke, n'adabereghị na ibe ya, ụdị ndị ahụ enyochalarị, ọ bịara bụrụ na ụdị mpaghara ndị a adabaghị na ibe ha. Nke a mere ka ọ dị mkpa ime ọtụtụ mgbanwe na nkọwa. N'ileghachi anya azụ ugbu a, anyị ghọtara na anyị kwesịrị ịgbakwunye modul ọba akwụkwọ n'ụdị mypy n'oge adịghị anya. Nke a ga-eme ka ọrụ anyị bụrụ nke a ga-ebu amụma.

Na-akọwa koodu ochie. Mgbe anyị malitere, anyị nwere ihe dịka ahịrị nde anọ nke koodu Python dị adị. O doro anya na ịkọwa koodu a niile abụghị ọrụ dị mfe. Anyị ekepụtala ngwá ọrụ a na-akpọ PyAnnotate nke nwere ike ịnakọta ụdị ozi ka ule na-agba ma nwee ike itinye nkọwa ụdị na koodu gị dabere na ozi anakọtara. Otú ọ dị, anyị ahụbeghị nkuchi a zuru ebe nile karịsịa. Ụdị ozi ịchịkọta adịchaghị nwayọọ, ma nkọwapụta ewepụtara na-akpaghị aka na-achọkarị ọtụtụ ndezi akwụkwọ ntuziaka. Anyị chere na anyị ga-agba ọsọ ngwa a ozugbo oge ọ bụla anyị na-enyocha koodu, ma ọ bụ gbasara ịnakọta ụdị ozi dabere na nyocha nke obere olu nke arịrịọ netwọkụ n'ezie, mana anyị kpebiri na anyị agaghị eme ya n'ihi na ụzọ ọ bụla dị ize ndụ.

N'ihi ya, enwere ike ịhụ na ọtụtụ koodu ahụ bụ ndị nwe ya ji aka ha depụta ya. Iji duzie usoro a n'ụzọ ziri ezi, anyị na-akwadebe akụkọ banyere modul na ọrụ ndị dị mkpa nke kwesịrị ịkọwa. Dịka ọmụmaatụ, ọ dị mkpa ịnye ụdị nkọwa maka modul ọba akwụkwọ nke a na-eji n'ọtụtụ narị ebe. Mana ọrụ ochie nke a na-eji nke ọhụrụ dochie ya adịkwaghị mkpa ịkọwapụta. Anyị na-anwalekwa iji nyocha static iji mepụta ụdị nkọwa maka koodu nketa.

Mbubata cyclic. N'elu, ekwuru m banyere mbubata cyclic ("dependency tangles"), ịdị adị nke mere ka o sie ike ime ngwa ngwa mypy. Anyị na-agbasi mbọ ike ime ka mypy na-akwado ụdị akpaalaokwu niile nke mbubata cyclic ndị a na-ebute. N'oge na-adịbeghị anya, anyị dechara a isi usoro redesign oru ngo nke doziri ọtụtụ mypy okwu banyere okirikiri ibubata. Nsogbu ndị a sitere n'oge mmalite nke ọrụ ahụ, laa azụ site na Alore, asụsụ mmụta nke ọrụ mypy lekwasịrị anya na mbụ. Alore syntax na-eme ka ọ dị mfe iji iwu mbubata cyclic dozie nsogbu. Mypy ọgbara ọhụrụ eketala oke ụfọdụ site na mbido mbụ ya, mmejuputa ya dị mfe (nke dabara adaba maka Alore). Python na-eme ka ịrụ ọrụ na mbubata okirikiri siri ike, tumadi n'ihi na okwu enweghị isi. Dịka ọmụmaatụ, ọrụ ọrụ nwere ike ịkọwapụta ụdị utu aha. Mypy anaghị enwe ike ịchọpụta ihe ndị dị otú a ruo mgbe edoziri ọtụtụ loop mbubata. Enweghị mgbagha dị otú ahụ na Alore. Mkpebi na-adịghị mma e mere na mmalite mmalite nke usoro mmepe nwere ike inye onye mmemme ahụ ihe ijuanya na-adịghị mma ọtụtụ afọ ka e mesịrị.

Nsonaazụ: ụzọ nke koodu nde 5 na ọhụụ ọhụrụ

Ọrụ mypy abịala ogologo oge - site na mmalite prototypes na sistemụ na-achịkwa ahịrị 4 nde nke ụdị koodu mmepụta. Dịka mypy siri pụta, a haziri ụdị nrịbama Python. Ụbọchị ndị a, usoro gburugburu ebe obibi dị ike etolitela gburugburu ịpị koodu Python. Ọ nwere ebe maka nkwado ọbá akwụkwọ, o nwere ngwá ọrụ inyeaka maka IDE na ndị editọ, o nwere ọtụtụ usoro njikwa ụdị, nke ọ bụla n'ime ha nwere uru na ọghọm ya.

Ọ bụ ezie na a na-enyelarị ụdị nlele na Dropbox, ekwenyere m na anyị ka nọ n'oge mmalite nke ịpị koodu Python. Echere m na ụdị teknụzụ nyocha ụdị ga-aga n'ihu na-agbanwe ma melite.

Ọ bụrụ na ijibeghị ụdị nyocha n'ime nnukwu ọrụ Python gị, mara na ugbu a bụ oge dị mma ịmalite ịkwaga na mpịnye static. Agwara m ndị mere mgbanwe yiri nke ahụ. Ọ dịghị nke ọ bụla n'ime ha kwara ụta. Ụdị nlele na-eme Python ka ọ bụrụ asụsụ dabara adaba maka ịmepụta nnukwu ọrụ karịa "Python oge niile."

Ezigbo ndị na-agụ akwụkwọ! Ị na-eji ụdị nlele na ọrụ Python gị?

Ụzọ iji pịnye akara koodu Python 4 nde. Akụkụ 3
Ụzọ iji pịnye akara koodu Python 4 nde. Akụkụ 3

isi: www.habr.com

Tinye a comment