Python Type Checker සංසන්දනය: හිස් බහාලුම් අනුමානය
අදහස්
Mewayz Team
Editorial Team
හිස් බහාලුම් පයිතන් වර්ගයේ චෙක්පත් බිඳ දමන්නේ ඇයි - සහ ඔබට ඒ ගැන කළ හැකි දේ
2015 දී PEP 484 වර්ග ඉඟි හඳුන්වා දීමෙන් පසු Python හි ක්රමානුකූල ටයිප් කිරීමේ පද්ධතිය සැලකිය යුතු ලෙස පරිණත වී ඇත. අද, මිලියන සංඛ්යාත සංවර්ධකයින් නිෂ්පාදනයට පහර දීමට පෙර දෝෂ අල්ලා ගැනීමට ස්ථිතික ආකාරයේ පරීක්ෂකයන් මත විශ්වාසය තබයි. නමුත් තවමත් පළපුරුදු ඉංජිනේරුවන් පවා ඉදිරියට ගෙන යන ආකාරයේ පද්ධතියේ සියුම්, කලකිරවන කොනක් තිබේ: හිස් බහාලුමක ඇත්තේ කුමන වර්ගයද? ඔබ විවරණයකින් තොරව x = [] ලියන විට, ඔබේ වර්ග පරීක්ෂකයාට අනුමාන කිරීමට සිදු වේ — සහ විවිධ පරීක්ෂකයන් වෙනස් ලෙස අනුමාන කරයි. මෙම අපසරනය විශාල කේත පදනමක් පවත්වාගෙන යන කණ්ඩායම් සඳහා සැබෑ ගැටලු නිර්මාණය කරයි, එහිදී වර්ග පරීක්ෂක මාරු කිරීම හෝ ඒකාබද්ධ කිරීම එක රැයකින් අනපේක්ෂිත දෝෂ සිය ගණනක් මතුවිය හැක.
මෙම ලිපිය මගින් ප්රධාන Python වර්ග හතර - mypy, pyright, pytype, සහ pyre - හිස් බහාලුම් අනුමානය හසුරුවන ආකාරය, ඔවුන් එකඟ නොවන්නේ ඇයි, සහ ඔබේ මෙවලම් තේරීම කුමක් වුවත් Type-safe Python ලිවීමට ඔබට අනුගමනය කළ හැකි ප්රායෝගික උපක්රම මොනවාද යන්න බිඳ දමයි.
මූලික ගැටලුව: හිස් බහාලුම් සහජයෙන්ම අපැහැදිලි වේ
පයිතන් හි මෙම අහිංසක රේඛාව සලකා බලන්න: ප්රතිඵල = []. ප්රතිඵල list[int] ද? ලැයිස්තුව[str]ද? list[dict[str, Any]]ද? අතිරේක සන්දර්භයක් නොමැතිව, ඇත්ත වශයෙන්ම දැන ගැනීමට ක්රමයක් නොමැත. Python ධාවන කාලය ගණන් ගන්නේ නැත - ලැයිස්තු ස්වභාවයෙන්ම විෂමජාතීය වේ - නමුත් ස්ථිතික වර්ගයේ පරීක්ෂකයින් ඔවුන්ගේ කාර්යය කිරීමට සෑම විචල්යයකටම කොන්ක්රීට් වර්ගයක් පැවරිය යුතුය. මෙය Python හි ගතික නම්යශීලීභාවය සහ ස්ථිතික විශ්ලේෂණය ලබා දීමට උත්සාහ කරන සහතික අතර මූලික ආතතියක් ඇති කරයි.
ගැටලු ශබ්ද කෝෂ සහ කට්ටල සමඟ සංයුක්ත වේ. හිස් {} ඇත්ත වශයෙන්ම විග්රහ කරනු ලබන්නේ ආඥාවක් ලෙස මිස, කට්ටලයක් ලෙස නොවේ, එය වර්ග මට්ටමේ අපැහැදිලි භාවයට ඉහළින් වාක්යමය අපැහැදිලි බවක් එක් කරයි. සහ කැදලි සහිත බහාලුම් — සිතන්න පෙරනිමිය(ලැයිස්තුව) හෝ ප්රතිඵල = {k: [] යතුරු තුළ k සඳහා} — අනුමාන යන්ත්ර ඒවායේ සීමාවන්ට තල්ලු කරන්න. සෑම වර්ගයකම පරීක්ෂකයන් තමන්ගේම හූරිස්ටික් සංවර්ධනය කර ඇති අතර, බොහෝ සංවර්ධකයන්ට වඩා වෙනස්කම් සැලකිය යුතු ය.
සැබෑ වැඩ බර සැකසීමේ නිෂ්පාදන පද්ධතිවල — එය පාරිභෝගික වාර්තා හසුරුවන CRM එකක් වේවා, රේඛීය අයිතම ජනනය කරන ඉන්වොයිසි මොඩියුලයක් වේවා, හෝ විශ්ලේෂණ නල මාර්ගයක් ප්රමිතික එක්රැස් කිරීමේ වේවා — හිස් බහාලුම් නිරන්තරයෙන් ආරම්භක රටා ලෙස දිස්වේ. ඔවුන්ගේ වර්ග වැරදි ලෙස ලබා ගැනීම ලින්ටර් අනතුරු ඇඟවීම් නිපදවන්නේ නැත; එය ධාවන කාලය වෙත ලිස්සා යන අව්යාජ දෝෂ සැඟවිය හැක.
Mypy: ව්යංග ඕනෑම දෙයක් සමග කල් දැමූ අනුමානය
Mypy, පැරණිතම සහ වඩාත් පුළුල් ලෙස භාවිතා කරන ලද Python වර්ගයේ පරීක්ෂක, හිස් බහාලුම් සඳහා සාපේක්ෂව ලිහිල් ප්රවේශයක් ගනී. එය ක්රියාකාරී විෂය පථයේදී x = [] හමු වූ විට, එය වර්ග තීරණය කල් දැමීමට උත්සාහ කරන අතර පසුව භාවිතා කිරීමෙන් මූලද්රව්ය වර්ගය අනුමාන කරයි. ඔබ x = [] පසුව x.append(42) ලියන්නේ නම්, mypy list[int] අනුමාන කරයි. කන්ටේනරය එකම විෂය පථය තුළ ජනාකීර්ණ වූ සරල අවස්ථා සඳහා මෙම "එකතු" උපායමාර්ගය පුදුම සහගත ලෙස හොඳින් ක්රියා කරයි.
කෙසේ වෙතත්, mypy ගේ හැසිරීම සන්දර්භය සහ දැඩි සැකසුම් මත පදනම්ව නාටකාකාර ලෙස වෙනස් වේ. මොඩියුලයේ විෂය පථයේ (ඉහළ මට්ටමේ කේතය), හෝ බහාලුම් ජනනය වීමට පෙර වෙනත් කාර්යයකට මාරු කළ විට, mypy බොහෝ විට ලැයිස්තුව[ඕනෑම] වෙත ආපසු වැටේ. -- දැඩි ධජය යටතේ, මෙය දෝෂයක් ඇති කරයි, නමුත් පෙරනිමි ප්රකාරයේදී එය නිහඬව ගමන් කරයි. මෙයින් අදහස් කරන්නේ දැඩි මාදිලියකින් තොරව mypy ධාවනය කරන කණ්ඩායම්වලට එහි අරමුණ පරාජය කරමින් ටයිප් පද්ධතියෙන් ගැලවී යාමක් ලෙස ක්රියා කරන ව්යංග-ටයිප් කළ බහාලුම් දුසිම් ගණනක් රැස් කර ගත හැකි බවයි.
විශේෂයෙන්ම සියුම් හැසිරීම්: 0.990 ට පෙර mypy අනුවාද සමහර විට ලැයිස්තුව[නොදන්නා] අභ්යන්තරව අනුමාන කර පසුව පැවරුම මත ලැයිස්තුව[ඕනෑම] වෙත පුළුල් කරයි. 0.990 න් පසු, අනුමානය දැඩි කරන ලදී, නමුත් මෙම වෙනස විසින් එය අවබෝධ කර නොගෙන අවසර ලත් හැසිරීම් මත රඳා සිටි විස්මිත සැබෑ ලෝකයේ කේත පදනම බිඳ දැමීය. මෙය පුනරාවර්තන තේමාවකි — රටා ඉතා සර්වසම්පූර්ණ බැවින් හිස් බහාලුම් අනුමානයට වෙනස් කිරීම් වඩාත් කඩාකප්පල්කාරී ආකාරයේ පිරික්සුම් යාවත්කාලීන අතර වේ.
Pyright: දැඩි අනුමාන සහ "නොදන්නා" වර්ගය
Microsoft විසින් වැඩි දියුණු කරන ලද Pyright සහ VS කේතයේ Pylance බල ගැන්වීම, මූලික වශයෙන් වෙනස් දාර්ශනික ස්ථාවරයක් ගනී. නිශ්ශබ්දව ඕනෑම වෙත ආපසු හැරෙනවා වෙනුවට, පයිරයිට් නොදන්නා (තවමත් තීරණය කර නොමැති වර්ගයකි) සහ ඕනෑම (වර්ග පරීක්ෂාවෙන් පැහැදිලි ඉවත් වීම) අතර වෙනස හඳුනා ගනී. ඔබ x = [] pyright හි දැඩි ප්රකාරයේදී ලියන විට, එය ලැයිස්තුව[නොදන්නා] අනුමාන කර රෝග විනිශ්චයක් වාර්තා කරයි, ඔබට අනුසටහනක් සැපයීමට බල කරයි.
පයිරයිට් විෂයය තුළ පටු වීම ගැන ද වඩාත් ආක්රමණශීලී වේ. ඔබ ලියන්නේ නම්:
- x = [] පසුව x.append("hello") — pyright infers list[str]
- x = [] පසුව x.append(1) පසුව x.append("hello") — pyright infers list[int | str]
- x = [] list[int] අපේක්ෂා කරන ශ්රිතයකට සෘජුවම ලබා දී ඇත — pyright list[int] ඇමතුම්-අඩවි සන්දර්භය වෙතින් අනුමාන කරයි
- x = [] ආපසු එන ආකාරයේ විවරණයකින් තොරව ශ්රිතයකින් ආපසු එවන ලදී — පයිරයිට් අනුමාන කරනවාට වඩා දෝෂයක් වාර්තා කරයි
මෙම ද්විපාර්ශ්වික අනුමානය (පසුව භාවිතා කිරීම සහ ඇමතුම් අඩවි වලින් අපේක්ෂිත වර්ග යන දෙකම භාවිතා කරමින්) හිස් බහාලුම් සඳහා mypy වලට වඩා පයිරයිට් සැලකිය යුතු ලෙස නිරවද්ය කරයි. හුවමාරුව යනු වාචිකත්වයයි: විවෘත මූලාශ්ර සංක්රමණ වාර්තා කිහිපයක විශ්ලේෂණයට අනුව, mypy හි දැඩි ප්රකාරයට සාපේක්ෂව සාමාන්ය සටහන් නොකළ කේත පදනමක් මත පයිරයිට් හි දැඩි මාදිලිය දළ වශයෙන් 30-40% වැඩි ගැටළු සලකුණු කරයි. සංකීර්ණ පසුබිම් පද්ධති ගොඩනඟන කණ්ඩායම් සඳහා — කියන්න, CRM, වැටුප් ලේඛනය සහ විශ්ලේෂණ පුරා විහිදෙන අන්තර් සම්බන්ධිත මොඩියුල 207ක් කළමනාකරණය කරන වේදිකාවක් — පයිරයිට් හි දැඩි බව ලිහිල් අනුමාන මග හැරිය හැකි සියුම් අතුරු මුහුණත් නොගැලපීම් අල්ලා ගනී.
Pytype සහ Pyre: The Les Travelled Roads
Google හි pytype සමහර විට වඩාත්ම ප්රායෝගික ප්රවේශය ගනී. අනුසටහන් අවශ්ය කිරීම හෝ ඕනෑම වෙත ආපසු යාම වෙනුවට, pytype විසින් ක්රියාකාරී සීමාවන් හරහා බහාලුමක් භාවිතා කරන ආකාරය නිරීක්ෂණය කිරීමට සම්පූර්ණ වැඩසටහන් විශ්ලේෂණය භාවිතා කරයි. ඔබ එක් ශ්රිතයක හිස් ලැයිස්තුවක් සාදා එය පූර්ණ සංඛ්යා එකතු කරන තවත් එකකට ලබා දෙන්නේ නම්, pytype හට බොහෝ විට කිසිදු විවරණයකින් තොරව list[int] අනුමාන කළ හැක. මෙම හරස්-ක්රියාකාරී අනුමානය ගණනය කිරීමේ මිල අධික වේ — pytype විශාල කේත පදනම මත mypy හෝ pyright වඩා සැලකිය යුතු ලෙස මන්දගාමී වේ — නමුත් එය සටහන් නොකළ කේතය මත අඩු ව්යාජ ධනයක් නිපදවයි.
Pytype හිස් බහාලුම් සඳහා "අර්ධ වර්ග" සංකල්පය ද හඳුන්වා දෙයි. නැවුම් ලෙස නිර්මාණය කරන ලද [] පරීක්ෂකයාට වැඩි භාවිතයක් ඇති බැවින් ක්රමානුකූලව පිරිපහදු කරන ලද අර්ධ වර්ගයක් ලැබේ. මෙය සංකල්පමය වශයෙන් අලංකාර වන නමුත් හිස් බහාලුමක් කිසිදා ජනාකීර්ණ නොවී කාර්යයන් කිහිපයක් හරහා ගලා යන විට, අර්ධ වර්ගය සම්පූර්ණයෙන් විසඳිය නොහැකි විට ව්යාකූල දෝෂ පණිවිඩ නිපදවිය හැක.
💡 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 ගේ pyre, mypy ගේ හැසිරීම් වලට වඩා සමීප නමුත් දැඩි පෙරනිමි සමග. Pyre x = [] ලැයිස්තුව[නොදන්නා] ලෙස සලකන අතර බොහෝ සන්දර්භයන්හිදී විවරණ අවශ්ය වේ. pyre අවකලනය වන්නේ එහි kwargs ලෙස භාවිතා කරන හිස් ශබ්දකෝෂ වචන හැසිරවීමයි - වෙබ් රාමු වල පොදු රටාවකි. මූල පද තර්ක සන්දර්භ වලින් ශබ්ද කෝෂ වර්ග අනුමාන කිරීමට පයිර්ට විශේෂ සිද්ධි තර්කයක් ඇත, රාමු-බර කේත පදනමේ අනුසටහන් බර අඩු කරයි. බොහෝ නවීන වෙබ් යෙදුම් වින්යාස කිරීම සහ ඉල්ලීම් හැසිරවීම සඳහා ශබ්ද කෝෂ අසුරන අධික ලෙස භාවිතා කිරීම ඇතුළත් වන බැවින්, මෙම ප්රායෝගිකවාදය ලාභාංශ ගෙවයි.
සැබෑ ලෝක බලපෑම: අනුමාන අපසරනය දෂ්ට කරන විට
වර්ග පිරික්සුම්කරුවන් අතර ඇති වෙනස්කම් ඔබ නිෂ්පාදන කේත පදනමක් තුළ අත්විඳින තුරු ඒවා ශාස්ත්රීය ලෙස පෙනෙනු ඇත. ව්යාපාරික යෙදුම්වල පොදු රටාවක් සලකා බලන්න: කොන්දේසි සහිතව ජනාකීර්ණ වන දත්ත ව්යුහයක් ආරම්භ කිරීම.
වඩාත්ම භයානක හිස් බහාලුම් වන්නේ චෙක්සර් ධජය වර්ගය නොවේ - ඒවා නිශ්ශබ්දව අනුමාන කළ ඕනෑම වර්ගයක් සමඟින් ගමන් කරන ඒවා වන අතර, එහි මූලාරම්භය වෙත ආපසු ලුහුබැඳිය නොහැකි තරම්TypeError සමඟ ධාවන වේලාවේදී පහළ ශ්රිතයක් බිඳ වැටෙන තුරු අනතුරු ඇඟවීමකින් තොරව නොගැලපෙන දත්ත රැස් කිරීමට ඉඩ සලසයි.
නිශ්චිත උදාහරණයක්: ෆින්ටෙක් ආරම්භයක කණ්ඩායමක් නිෂ්පාදන ගැටලුවක් නිදොස් කිරීම සඳහා දින තුනක් ගත කිරීම වාර්තා කර ඇති අතර එහිදී ගෙවීම් සැකසුම් කාර්යයක් තුළ ආරම්භ කරන ලද හිස් ලැයිස්තුවක් mypy විසින් ලැයිස්තුව[ඕනෑම] ලෙස අනුමාන කරන ලදී. ලැයිස්තුවේ මුදල් ප්රමාණයන් සඳහා දශම වස්තු අඩංගු විය යුතු නමුත්, ඒ වෙනුවට කේත මාර්ගයක් float අගයන් එකතු කරමින් තිබුණි. මයිපිගේ ලිහිල් නිගමනය නිහඬව එයට ඉඩ දුන්නේය. දෝෂය මතු වූයේ පාවෙන අංක ගණිතයේ වටකුරු දෝෂයන් ඉන්වොයිසි 12,000 ක කණ්ඩායමක ඩොලර් 0.01 ක විෂමතාවයක් ඇති කළ විට පමණි. ඔවුන් දැඩි ප්රකාරයේදී පයිරයිට් භාවිතා කළේ නම් හෝ හිස් ලැයිස්තුව ලැයිස්තුව[දශම] ලෙස සරලව සටහන් කළේ නම්, සංවර්ධන වේලාවේදී දෝෂය හසුවීමට ඉඩ තිබුණි.
138,000+ පරිශීලක ගිණුම් හරහා වේදිකාව විසින් ඉන්වොයිසි කිරීම, වැටුප් ගණනය කිරීම් සහ මූල්ය විශ්ලේෂණ ක්රියාවට නංවන Mewayz හි, මෙවැනි ආකාරයේ-ආරක්ෂිත පරතරය න්යායික නොවේ - එය නිවැරදි වැටුප් ගෙවීම් සහ මිල අධික නැවත ගණනය කිරීම් අතර වෙනසයි. බහාලුම් ආරම්භ කිරීම වටා ඇති දැඩි ටයිප් කිරීමේ විනය උද්වේගකර නිෂ්පාදන සිදුවීම් වලක්වන "නීරස" ඉංජිනේරු භාවිතයන්ගෙන් එකකි.
ආරක්ෂක බහාලුම් ආරම්භ කිරීම සඳහා හොඳම භාවිතයන්
ඔබේ කණ්ඩායම කුමන ආකාරයේ පරීක්ෂකයක් භාවිතා කළත්, හිස් බහාලුම් අපැහැදිලි බව සම්පූර්ණයෙන්ම ඉවත් කිරීමට නිශ්චිත උපාය මාර්ග තිබේ. ඉලක්කය වන්නේ හිස් බහාලුම් සඳහා කිසිවිටෙක අනුමාන මත විශ්වාසය නොතැබීමයි - වර්ගය පැහැදිලි කරන්න එවිට ඔබේ කේතය සියලුම චෙක්පත් හරහා ගෙන යා හැකි වන අතර අනුවාද අතර අනුමාන හැසිරීම් වෙනස්වීම් වලට ප්රතිශක්තිකරණය වේ.
- සෑම විටම හිස් බහාලුම් විචල්යයන් සටහන් කරන්න. ප්රතිඵල = [] වෙනුවට ප්රතිඵල: list[int] = [] ලියන්න. ඉතිරි කරන ලද නිදොස් කිරීමේ කාලය හා සසඳන විට සුළු වාචික පිරිවැය නොසැලකිය හැකිය. මෙම තනි භාවිතය හිස් බහාලුම් අනුමාන ගැටළු වලින් දළ වශයෙන් 80% ක් ඉවත් කරයි.
- සංකීර්ණ බහාලුම් සඳහා කර්මාන්තශාලා ශ්රිත භාවිතා කරන්න. cache = {} වෙනුවට, def make_cache() -> dict[str, list[UserRecord]]: return {} වැනි ශ්රිතයක් ලියන්න. ආපසු එන ආකාරයේ විවරණය අපේක්ෂිත වර්ගය නොපැහැදිලි සහ ස්වයං-ලේඛනගත කරයි.
- සුළු නොවන වර්ග සඳහා වචනවලට වඩා ටයිප් කළ කන්ස්ට්රක්ටරවලට ප්රිය කරන්න. සකසන අවබෝධතා අනුමාන මත රඳා නොසිට අයිතම: set[int] = set() ලියන්න. පෙරනිමිය සහ කවුන්ටරය සඳහා, සෑම විටම වර්ග පරාමිතිය සපයන්න: ගණන්: කවුන්ටරය[str] = කවුන්ටරය().
- නව කේතය සඳහා ඔබේ වර්ග පරීක්ෂකගේ දැඩි මාදිලිය වින්යාස කරන්න. mypy සහ pyright යන දෙකම ගොනුවකට හෝ එක් නාමාවලි වින්යාසයකට සහය දක්වයි. ලෙගසි කේත ක්රමයෙන් සංක්රමණය කරන අතරේ නව මොඩියුල දැඩි ලෙස පරීක්ෂා කිරීම සබල කරන්න. මෙය නව ව්යංග-ටයිප් කළ බහාලුම් සමුච්චය වීම වළක්වයි.
- ඔබේ CI නල මාර්ගයට වර්ග පරීක්ෂක සංසන්දනය එක් කරන්න. mypy සහ pyright යන දෙකම ඔබේ කේත පදනම මත ධාවනය කිරීම කලින් අනුමාන අපසරනය අල්ලා ගනී. රටාවක් එක් පරීක්ෂකයක් පසුකර තවත් පරීක්ෂකයක් අසමත් වුවහොත්, එය වර්ගය ප්රමාණවත් තරම් පැහැදිලි නැති බවට සංඥාවකි.
විශාල පින්තූරය: කණ්ඩායම් පුහුණුවක් ලෙස ටයිප් පරීක්ෂා කිරීම
හිස් බහාලුම් අනුමානය අවසානයේ දී පයිතන් වර්ගයේ පද්ධතියේ විශාල අභියෝගයක ක්ෂුද්ර විශ්වයකි: පහසුව සහ ආරක්ෂාව අතර ආතතිය. Python හි "අපි සියල්ලෝම වැඩිහිටියන්ට එකඟ වෙමු" යන දර්ශනය මූලාකෘතිකරණය සහ ස්ක්රිප්ට් සඳහා ඉතා අලංකාර ලෙස ක්රියා කරයි, නමුත් දහස් ගණනක් පරිශීලකයින්ට සේවා සපයන නිෂ්පාදන පද්ධති සඳහා ශක්තිමත් සහතික අවශ්ය වේ. [] ආකාරයේ මූලික දෙයක් සම්බන්ධයෙන් ප්රධාන වර්ග පරීක්ෂකයින් හතරක් එකඟ නොවීම මගින් පයිතන් ටයිප් කිරීමේ පරිසර පද්ධතිය තවමත් පරිණත වෙමින් පවතින බව අවධාරනය කරයි.
ඉංජිනේරු කණ්ඩායම් සඳහා සංකීර්ණ වේදිකා තැනීම - ඔබ අතලොස්සක් ක්ෂුද්ර සේවා හෝ Mewayz's business OS වැනි අන්තර් සම්බන්ධිත මොඩියුල සිය ගණනක් සහිත ඒකාබද්ධ පද්ධතියක් කළමනාකරණය කරන්නේ නම් - ප්රායෝගික උපදෙස් සරල ය: හිස් බහාලුම් සඳහා අනුමාන මත විශ්වාසය නොතබන්න, වර්ග පරීක්ෂකයක් තෝරා එය දැඩි ලෙස වින්යාස කරන්න. [] වෙනුවට ලැයිස්තුව[ඉන්වොයිසිය] ලිවීමට ගත කළ මිනිත්තු පහ, ඔබේ කේත පදනම පරිමාණය වන විට ඔබට පැය ගණනක් දෝෂහරණය කිරීමට ඉතිරි කරයි.
PEP 696 (පෙරනිමි ආකාරයේ පරාමිති) සහ PEP 695 (වර්ග පරාමිති වාක්ය ඛණ්ඩය) නව Python අනුවාදවලට දිගටම ගොඩබසින බැවින්, පැහැදිලි ටයිප් කිරීමේ ergonomics වැඩිදියුණු වෙමින් පවතී. "අනුසටහන්" සහ "නොකියූ" පයිතන් අතර පරතරය අඩු වනු ඇත. නමුත් එදින දක්වා, පැහැදිලි බහාලුම් වර්ග Python සංවර්ධකයාගේ මෙවලම් කට්ටලයේ ඉහළම-ROI භාවිතාවන්ගෙන් එකක් ලෙස පවතී - සෑම මොඩියුලයක්ම, සෑම ස්ප්රින්ට් එකක්ම සහ සෑම නිෂ්පාදන යෙදවීමක් හරහාම සංයුක්ත පොලී ගෙවන කුඩා විනයකි.
ඔබේ ව්යාපාර මෙහෙයුම් පද්ධතිය අදම ගොඩනඟන්න
නිදහස් සේවකයින්ගේ සිට නියෝජිතායතන දක්වා, Mewayz ඒකාබද්ධ මොඩියුල 207ක් සමඟ ව්යාපාර 138,000+ බලගන්වයි. නොමිලේ ආරම්භ කරන්න, ඔබ වැඩෙන විට උත්ශ්රේණි කරන්න.
නිදහස් ගිණුම→නිතර අසන ප්රශ්න
අකුරු ටයිප් කරන්නන්ට හිස් ලැයිස්තුවක වර්ගයට එකඟ විය නොහැක්කේ ඇයි?
ඔබ `x = []` ලියන විට, වර්ග පරීක්ෂකය පැහැදිලි ඉඟි නොමැතිව වර්ගයක් අනුමාන කළ යුතුය. විවිධ පරීක්ෂකයින් විවිධ උපාය මාර්ග භාවිතා කරයි: සමහරක් 'ලැයිස්තුව[ඕනෑම]` (ඕනෑම දෙයක් ලැයිස්තුවක්) අනුමාන කරන අතර අනෙක් අය `list[None]` වැනි වඩාත් නිශ්චිත නමුත් වැරදි වර්ගයක් අනුමාන කළ හැකිය. ඔවුන් එකඟ නොවන්නේ විශ්වීය සම්මතයක් නොමැතිකමයි. බහු පරික්ෂක භාවිතා කරන ව්යාපෘති සඳහා, මෙම නොගැලපීම විශාල හිසරදයක් විය හැකි අතර, එක් මෙවලමක් තවත් එකකින් ගමන් කරන විශ්ලේෂණය බිඳ දමයි.
හිස් බහාලුම් දෝෂ නිවැරදි කිරීමට සරලම ක්රමය කුමක්ද?
වඩාත් සරල විසඳුම වන්නේ පැහැදිලි ආකාරයේ විවරණයක් සැපයීමයි. `my_list = []` වෙනුවට, අපේක්ෂිත වර්ගය පැහැදිලිව ප්රකාශ කිරීමට `my_list: list[str] = []` ලියන්න. මෙය mypy, Pyright, සහ Pyre වැනි විවිධ මෙවලම් හරහා ස්ථාවර හැසිරීමක් සහතික කරමින්, වර්ග පරීක්ෂක සඳහා සියලු අපැහැදිලි භාවය ඉවත් කරයි. අනුමාන දෝෂ වැළැක්වීම සඳහා සියලුම හිස් බහාලුම් ආරම්භ කිරීම් සඳහා මෙම පරිචය නිර්දේශ කෙරේ.
පන්ති නිර්වචන තුළ හිස් බහාලුම් හසුරුවන්නේ කෙසේද?
පන්ති ඇතුළත විවරණ සඳහා විශේෂ හැසිරවීමක් අවශ්ය වන බැවින් මෙය පොදු ගැටළුවකි. ලැයිස්තුව පන්ති උපලක්ෂණයක් වීමට අදහස් කරන්නේ නම්, ඔබ `__අනාගත__ ආයාත විවරණවලින්` ආයාත කිරීම හෝ `ClassVar` විවරණයක් භාවිත කළ යුතුය. උදාහරණයක් ලෙස, `class MyClass: my_list: ClassVar[list[str]] = []`. මෙය නොමැතිව, වර්ග පරීක්ෂකයා වර්ගය නිවැරදිව අනුමාන කිරීමට අරගල කළ හැකි අතර, එය දෝෂ වලට තුඩු දෙයි.
විශාල ව්යාපෘතිවල මෙම ටයිප් කිරීමේ ගැටළු කළමනාකරණය කිරීමට උපකාර වන මෙවලම් තිබේද?
ඔව්, Pyright (VS Code හි Pylance බලගන්වන) වැනි උසස් වර්ගයේ පරීක්ෂකයන් සංකීර්ණ අනුමානයන් හැසිරවීමට විශේෂයෙන් දක්ෂ වේ. විශාල කේත සමුදායන් සඳහා, Mewayz වැනි වේදිකා (මසකට $19 සඳහා විශ්ලේෂණ මොඩියුල 207ක් පිරිනැමීම) ගැඹුරු, වඩාත් ස්ථාවර ආකාරයේ පිරික්සීමක් සැපයිය හැකි අතර ලිපියේ සාකච්ඡා කර ඇති නොගැලපීම් අවම කරමින් ඔබේ මුළු කණ්ඩායම පුරා විවරණ භාවිතයන් බලාත්මක කිරීමට උදවු කරයි.
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