Hacker News

بەراوردکردنی پشکنەری جۆری پایتۆن: دەرئەنجامدانی دەفری بەتاڵ

کۆمێنتەکان

1 min read Via pyrefly.org

Mewayz Team

Editorial Team

Hacker News

بۆچی دەفرە بەتاڵەکان پشکنەری جۆری پایتۆن دەشکێنن — و چی دەتوانیت لەو بارەیەوە بکەیت

سیستەمی تایپکردنی وردە وردەی پایتۆن بە شێوەیەکی بەرچاو پێگەیشتووە لەو کاتەوەی کە PEP 484 ئاماژەی جۆری ناساند لە ساڵی 2015. ئەمڕۆ ملیۆنان گەشەپێدەر پشت بە پشکنەری جۆری ئیستاتیک دەبەستن بۆ گرتنی هەڵەکان پێش ئەوەی بەر بەرهەمهێنان بگرن. بەڵام گۆشەیەکی ورد و بێزارکەری سیستەمی جۆرەکان هەیە کە هێشتا تەنانەت ئەندازیارانی بە ئەزموونیش تووشی شۆک دەکات: دەفرێکی بەتاڵ چ جۆرێکی هەیە؟ کاتێک x = [] بەبێ تێبینی دەنووسیت، پشکنەری جۆرەکەت دەبێت پێشبینی بکات — و پشکنەرە جیاوازەکان بە شێوەیەکی جیاواز پێشبینی دەکەن. ئەم جیاوازییە کێشەی ڕاستەقینە بۆ ئەو تیمانە دروست دەکات کە بنکە کۆدە گەورەکان دەپارێزن، کە گۆڕین یان تێکەڵکردنی پشکنەری جۆر دەتوانێت سەدان هەڵەی چاوەڕواننەکراو لە شەوێکدا دەربکەوێت.

ئەم بابەتە باس لەوە دەکات کە چۆن چوار پشکنەری سەرەکی جۆری پایتۆن — mypy، pyright، pytype و pyre — مامەڵە لەگەڵ دەرئەنجامدانی دەفری بەتاڵ دەکەن، بۆچی ناکۆکن، و چ ستراتیژییەکی پراکتیکی دەتوانیت بگرێتەبەر بۆ نووسینی پایتۆنی سەلامەتی جۆری پایتۆن بەبێ گوێدانە هەڵبژاردنی ئامرازەکانت.

کێشەی سەرەکی: دەفرە بەتاڵەکان لە بنەڕەتدا ناڕوونن

ئەم هێڵە بێ زیانەی پایتۆن لەبەرچاو بگرە: results = []. ئایا ئەنجامەکان لیستی[int]ە؟ لیستێک[str]؟ لیستێک[dict[str, Any]]؟ بەبێ کۆنتێکستی زیادە، بەڕاستی هیچ ڕێگەیەک نییە بۆ زانین. کاتی جێبەجێکردنی پایتۆن گرنگی پێنادات — لیستەکان بە سروشت نایەکسانن — بەڵام پشکنەرانی جۆری ئیستاتیک پێویستە جۆرێکی کۆنکرێتی بۆ هەموو گۆڕاوێک دیاری بکەن بۆ ئەوەی کارەکانیان ئەنجام بدەن. ئەمەش گرژییەکی بنەڕەتی لە نێوان نەرمی داینامیکی پایتۆن و ئەو گەرەنتیانەی کە شیکاری ئیستاتیک هەوڵی دابینکردنی دەدات دروست دەکات.

کێشەکە لەگەڵ فەرهەنگ و کۆمەڵەدا ئاوێتە دەبێت. {} ی بەتاڵ لە ڕاستیدا وەک dict شی دەکرێتەوە، نەک set، کە ناڕوونی ڕستەسازی زیاد دەکات لەسەر ناڕوونی ئاستی جۆر. وە کۆنتێنەرە هێلانەکراوەکان — بیربکەرەوە defaultdict(list) یان results = {k: [] بۆ k لە کلیلەکاندا} — بزوێنەری دەرئەنجام پاڵدەنێن بۆ سنوورەکانیان. هەر جۆرە پشکنەرێک هێوریستیکی خۆی پەرەپێداوە و جیاوازییەکان لەوە گرنگترن کە زۆربەی گەشەپێدەران درکی پێدەکەن.

لە سیستەمی بەرهەمهێناندا کە باری کاری ڕاستەقینە پرۆسێس دەکات - جا CRM بێت کە مامەڵە لەگەڵ تۆمارەکانی کڕیار دەکات، مۆدیولێکی فاکتورەکردن بێت کە بابەتە دێڕەکان دروست دەکات، یان بۆری شیکاری کە پێوەرەکان کۆدەکاتەوە - دەفرە بەتاڵەکان بەردەوام وەک نەخشی دەستپێکردن دەردەکەون. وەرگرتنی جۆرەکانیان بە هەڵە تەنها هۆشداریی لینتەر بەرهەم ناهێنێت؛ دەتوانێت هەڵە ڕاستەقینەکان داپۆشێت کە بەناودا دەخلیسکن بۆ کاتی جێبەجێکردن.

Mypy: دەرئەنجامدانی دواخراو لەگەڵ هەریەکێکی ناڕاستەوخۆ

Mypy، کۆنترین و بەرفراوانترین پشکنەری جۆری پایتۆنە، ڕێگەیەکی تاڕادەیەک نەرم و نیان دەگرێتەبەر بۆ دەفرە بەتاڵەکان. کاتێک لە بازنەی فەنکشندا ڕووبەڕووی x = [] دەبێتەوە، هەوڵدەدات بڕیاری جۆر دوابخات و جۆری توخمەکە لە بەکارهێنانی دواتر دەربخات. ئەگەر x = [] بنووسیت و دواتر x.append(42)، mypy list[int] دەرئەنجام دەدات. ئەم ستراتیژەی "یەکگرتن" بە شێوەیەکی سەرسوڕهێنەر باش کاردەکات بۆ حاڵەتە ڕاستەوخۆکان کە دەفرەکە لە هەمان بازنەدا دانیشتووە.

بەڵام ڕەفتاری mypy بە شێوەیەکی سەرنجڕاکێش دەگۆڕێت بەپێی کۆنتێکست و ڕێکخستنەکانی توندی. لە بازنەی مۆدیول (کۆدی ئاستی سەرەوە)، یان کاتێک کە کۆنتێنەرەکە دەگوازرێتەوە بۆ فەنکشنێکی تر پێش ئەوەی پڕ بکرێتەوە، mypy زۆرجار دەکەوێتە list[Any]. لە ژێر ئاڵای --strict، ئەمە هەڵەیەک دروست دەکات، بەڵام لە دۆخی پێشوەختەدا بە بێدەنگی تێدەپەڕێت. ئەمەش واتە ئەو تیمانەی کە mypy بەبێ دۆخی توند بەڕێوەدەبەن دەتوانن دەیان کۆنتێنەری تایپکراوی ناڕاستەوخۆ کۆبکەنەوە کە وەکو هێلکەی هەڵهاتن لە سیستەمی تایپکردن کاردەکەن، ئامانجەکەی دەشکێنن.

یەک ڕەفتارێکی ورد و تایبەت: وەشانی mypy پێش 0.990 هەندێک جار list[Unknown] لە ناوەوە دەرئەنجام دەدا و پاشان فراوانتر دەبن بۆ list[Any] لە کاتی تەرخانکردندا. دوای 0.990، دەرئەنجامەکە توندتر بووەوە، بەڵام گۆڕانکارییەکە ژمارەیەکی سەرسوڕهێنەری بنکە کۆدەکانی جیهانی ڕاستەقینەی شکاند کە پشتیان بە ڕەفتاری ڕێگەپێدراو بەستبوو بەبێ ئەوەی هەستیان پێبکەن. ئەمە بابەتێکی دووبارەبووەوەیە — گۆڕانکارییەکان بۆ دەرئەنجامدانی دەفری بەتاڵ لە تێکدەرترین نوێکارییەکانی پشکنەری جۆرەکانن چونکە نەخشەکان زۆر لە هەموو شوێنێکدا هەن.

Pyright: دەرئەنجامدانی توند و جۆری "نادیار"

پایرایت کە لەلایەن مایکرۆسۆفتەوە پەرەی پێدراوە و پایلانس لە ڤی ئێس کۆددا بەهێز دەکات، هەڵوێستێکی فەلسەفی جیاواز لە بنەڕەتدا دەگرێتەبەر. لەبری ئەوەی بە بێدەنگی بگەڕێتەوە بۆ هەر، pyright جیاوازی دەکات لە نێوان نەناسراو (جۆرێک کە هێشتا دیاری نەکراوە) و هەر (دەرچوونێکی ڕوون لە پشکنینی جۆر). کاتێک x = [] لە دۆخی توندی pyright دەنووسیت، ئەوە list[Unknown] دەرئەنجام دەدات و ڕاپۆرتی دەستنیشانکردنێک دەدات، ناچارت دەکات تێبینییەک پێشکەش بکەیت.

هەروەها

پایڕایت زیاتر شەڕانگێزە سەبارەت بە تەسککردنەوە لە چوارچێوەی بازنەیدا. ئەگەر بنووسیت:

  • x = [] بەدوایدا x.append("سڵاو") — pyright list[str]
  • دەرئەنجام دەدات
  • x = [] بەدوایدا x.append(1) پاشان x.append("سڵاو") — pyright list[int | str]
  • x = [] ڕاستەوخۆ دەگوازرێتەوە بۆ فەنکشنێک کە چاوەڕوانی list[int] دەکات — pyright list[int] لە چوارچێوەی سایتی بانگەواز
  • ەوە دەرئەخات
  • x = [] لە فەنکشنێکەوە گەڕاوەتەوە بەبێ تێبینی جۆری گەڕانەوە — pyright هەڵەیەک ڕاپۆرت دەکات نەک پێشبینی

ئەم دەرئەنجامە دوو ئاراستەییە (بە بەکارهێنانی هەردوو بەکارهێنانی دواتر و جۆری چاوەڕوانکراو لە سایتەکانی پەیوەندی) pyright بە شێوەیەکی بەرچاو وردتر دەکات لە mypy بۆ دەفری بەتاڵ. مامەڵەکردنەکە قسەکردنە: دۆخی توندی pyright نزیکەی 30-40% کێشەی زیاتر لەسەر بنکەیەکی کۆدی ئاسایی بێ تێبینی بە بەراورد بە دۆخی توندی mypy ئاڵا دەکات، بەپێی شیکارییەکانی چەندین ڕاپۆرتی کۆچکردنی سەرچاوە کراوە. بۆ ئەو تیمانەی کە سیستەمی پاشکۆی ئاڵۆز دروست دەکەن - بڵێین، پلاتفۆرمێک کە 207 مۆدیۆلی بەیەکەوە بەستراو بەڕێوەدەبات کە CRM، مووچە و شیکاری دەگرێتەوە - توندی pyright ناتەبایی ڕووکارە وردەکان دەگرێت کە دەرئەنجامە نەرمەکان لەدەستی دەدەن.

پایتایپ و پایر: ئەو ڕێگایانەی کەمتر گەشتیان پێدەکرێت

پایتایپی گووگڵ ڕەنگە پراگماتیکترین ڕێباز بگرێتەبەر. لەبری ئەوەی پێویستی بە تێبینی هەبێت یان بگەڕێتەوە بۆ هەر، pytype شیکاری تەواوی بەرنامە بەکاردەهێنێت بۆ بەدواداچوون بۆ چۆنیەتی بەکارهێنانی دەفرێک لە سنووری فەنکشنەکاندا. ئەگەر لیستێکی بەتاڵ لە فەنکشنێکدا دروست بکەیت و بیگوازیتەوە بۆ فەنکشنێکی تر کە ژمارە تەواوەکان زیاد دەکات، زۆرجار pytype دەتوانێت list[int] دەربخات بەبێ هیچ تێبینییەک. ئەم دەرئەنجامە cross-function یە لە ڕووی حیساباتیەوە گرانە — 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 →

لەم نێوەندەدا، pyre ی Meta لە هەڵسوکەوتی mypy نزیکتر دەبێتەوە بەڵام بە دیفۆڵتی توندتر. پایر x = [] وەک list[unknown] مامەڵەی لەگەڵ دەکات و لە زۆربەی کۆنتێکستەکاندا پێویستی بە تێبینی هەیە. ئەو شوێنەی کە pyre خۆی جیا دەکاتەوە لە مامەڵەکردندایە لەگەڵ وشەی فەرهەنگی بەتاڵ کە وەک kwargs بەکاردەهێنرێن — نەخشێکی باو لە چوارچێوەی وێبدا. پایر لۆژیکی کەیسی تایبەتی هەیە بۆ دەرخستنی جۆرەکانی فەرهەنگ لە کۆنتێکستەکانی ئارگومێنتی وشەی سەرەکی، کەمکردنەوەی بارگرانی تێبینیکردن لە بنکە کۆدەکانی چوارچێوە قورسدا. بە سەرنجدان بەوەی کە زۆربەی بەرنامەکانی وێبی مۆدێرن بەکارهێنانی زۆر لە پاکەتکردنی فەرهەنگ بۆ ڕێکخستن و مامەڵەکردن لەگەڵ داواکارییەکان لەخۆدەگرێت، ئەم پراگماتیزمە سوودی هەیە.

کاریگەری جیهانی ڕاستەقینە: کاتێک کە جیابوونەوە دەرئەنجامەکان گاز دەگرێت

جیاوازییەکانی نێوان پشکنەری جۆرەکان لەوانەیە ئەکادیمی دەرکەون تاوەکو لە بنکەیەکی کۆدی بەرهەمهێناندا ئەزموونیان دەکەیت. نەخشێکی باو لە بەرنامەکانی بازرگانیدا لەبەرچاو بگرە: دەستپێکردنی پێکهاتەی داتا کە بە مەرج پڕ دەبێتەوە.

<بلۆککۆت>

مەترسیدارترین دەفرە بەتاڵەکان ئەوانە نین کە ئاڵای پشکنەرانی جۆرن — ئەوانەن کە بە بێدەنگی بە جۆرێکی دەرهێنراو هەرێک تێدەپەڕن، ڕێگە بە داتا ناتەباکان دەدەن بەبێ ئاگادارکردنەوە کۆببنەوە تاوەکو فەنکشنێکی خوارەوە لە کاتی جێبەجێکردندا بە TypeError کە نزیکە لە مەحاڵەوە بگەڕێتەوە بۆ سەرچاوەکەی.

نموونەیەکی کۆنکرێتی: تیمێک لە دەستپێشخەرییەکی فینتەک ڕاپۆرتیان دا کە سێ ڕۆژیان بەسەر بردووە بۆ چاککردنەوەی کێشەیەکی بەرهەمهێنان کە لیستێکی بەتاڵ، کە لە فەنکشنێکی پرۆسێسی پارەداندا دەستیپێکردووە، وەک list[Any] لەلایەن mypy دەرکەوتووە. بڕیار بوو لیستەکە شتەکانی دەهەمی بۆ بڕی دراوەکان لەخۆبگرێت، بەڵام ڕێڕەوێکی کۆد لەبری ئەوە بەهاکانی floatی زیاد دەکرد. دەرئەنجامە نەرمەکەی مایپی بە بێدەنگی ڕێگەی پێدا. هەڵەکە تەنها کاتێک دەرکەوت کە هەڵەکانی وردکردنەوە لە ژمێریاری فلۆتدا بووە هۆی جیاوازی 0.01 دۆلار لەسەر وەجبەیەکی 12,000 فاکتورە. ئەگەر لە دۆخی تونددا pyright یان بەکارهێنابا، یان بە سادەیی لیستە بەتاڵەکەیان وەک list[Decimal] تێبینی کردبا، ئەوا هەڵەکە لە کاتی پەرەپێداندا دەگیرا.

لە Mewayz، کە پلاتفۆرمەکە فاکتورەکردن، حیساباتی مووچە و شیکاری دارایی لە سەرانسەری 138,000+ ئەژمێری بەکارهێنەردا پرۆسێس دەکات، ئەم جۆرە بۆشاییە لە جۆری سەلامەتی تیۆری نییە — ئەوە جیاوازی نێوان ڕاکردنی دروستی مووچە و دووبارە حیساباتی تێچووی زۆرە. دیسیپلینێکی توندی تایپکردن لە دەوری دەستپێکردنی کۆنتێنەر یەکێکە لەو پراکتیزە ئەندازیارییە "بێزارکەرانەی" کە ڕێگری لە ڕووداوە ورووژێنەرەکانی بەرهەمهێنان دەکات.

باشترین پراکتیزەکان بۆ دەستپێکردنی کۆنتێنەری بەرگری

بەبێ گوێدانە ئەوەی تیمەکەت کام پشکنەری جۆری بەکاردەهێنێت، ستراتیژی کۆنکرێتی هەیە بۆ نەهێشتنی ناڕوونیی دەفری بەتاڵ بە تەواوی. ئامانج ئەوەیە کە هەرگیز پشت بە دەرئەنجام نەبەستیت بۆ دەفرە بەتاڵەکان — جۆرەکە ڕوون بکە بۆ ئەوەی کۆدەکەت لە سەرانسەری هەموو پشکنەرەکاندا بگوازرێتەوە و بەرگری لە گۆڕانکارییەکانی هەڵسوکەوتی دەرئەنجامکردن لە نێوان وەشانەکاندا هەبێت.

  1. هەمیشە گۆڕاوە بەتاڵەکانی کۆنتێنەر تێبینی بکە. results بنووسە: list[int] = [] لەبری results = []. تێچووی قسەکردنە بچووکەکان بە بەراورد بەو کاتەی هەڵەکردن کە پاشەکەوت کراوە کەم وێنەیە. ئەم تاکە پراکتیزەیە نزیکەی 80%ی کێشەکانی دەرئەنجامدانی دەفری بەتاڵ لەناو دەبات.
  2. فەنکشنەکانی کارگە بۆ کۆنتێنەرە ئاڵۆزەکان بەکاربهێنە. لەبری cache = {}، فەنکشنێکی وەک def make_cache() -> dict[str, list[UserRecord]] بنووسە: {} بگەڕێنەرەوە. تێبینی جۆری گەڕانەوە جۆری مەبەستدار دەکاتە بێ دوو دڵی و خۆبەڵگەنامەکردن.
  3. دروستکەرانی تایپکراو بە باشتر بزانە لە وشەی ڕستەیی بۆ جۆرە نائاساییەکان. بابەتەکان بنووسە: set[int] = set() نەک پشت بە دەرئەنجامدانی تێگەیشتنی کۆمەڵە ببەستیت. بۆ defaultdict و Counter، هەمیشە پارامێتری جۆر دابین بکە: ژمارەکان: Counter[str] = Counter().
  4. دۆخی توندی پشکنەری جۆرەکەت بۆ کۆدی نوێ ڕێکبخە. هەردوو mypy و pyright پشتگیری لە ڕێکخستنی هەر پەڕگەیەک یان هەر بەڕێوەبەرایەتییەک دەکەن. پشکنینی توند لەسەر مۆدیولە نوێیەکان چالاک بکە لەکاتێکدا وردە وردە کۆدی میراتی کۆچ دەکەیت. ئەمەش ڕێگری دەکات لە کۆبوونەوەی دەفرە نوێیەکانی جۆری ناڕاستەوخۆ.
  5. بەراوردکردنی پشکنەری جۆر زیاد بکە بۆ بۆری CI ـەکەت. بەڕێوەبردنی هەردوو mypy و pyright لەسەر بنکەی کۆدەکەت زوو جیاوازی دەرئەنجامەکان دەگرێت. ئەگەر نەخشێک لە پشکنەرێک تێپەڕێت بەڵام لە پشکنەرێکی تردا شکستی هێنا، ئەوە سیگناڵێکە کە جۆرەکە بەس ڕوون نییە.

وێنەی گەورەتر: پشکنینی جۆر وەک مەشقێکی تیم

دەرئەنجامدانی دەفری بەتاڵ لە کۆتاییدا وردە گەردوونێکی تەحەدای گەورەترە لە سیستەمی جۆری پایتۆن: گرژی نێوان ئاسانکاری و سەلامەتی. فەلسەفەی پایتۆن کە "هەموومان گەورەساڵانی ڕەزامەندین" بە جوانی کاردەکات بۆ پرۆتۆتایپ و سکریپتەکان، بەڵام سیستەمی بەرهەمهێنان کە خزمەت بە هەزاران بەکارهێنەر دەکات پێویستیان بە گەرەنتی بەهێزترە. ئەو ڕاستییەی کە چوار پشکنەری سەرەکی جۆرەکان لەسەر شتێکی بنەڕەتی وەک جۆری [] ناکۆکن، جەخت لەوە دەکاتەوە کە ئیکۆسیستەمی تایپکردنی پایتۆن هێشتا پێدەگات.

بۆ تیمەکانی ئەندازیاری کە پلاتفۆرمی ئاڵۆز دروست دەکەن — جا تۆ مشتێک مایکرۆسێرڤیس بەڕێوەدەبەیت یان سیستەمێکی یەکگرتوو لەگەڵ سەدان مۆدیۆلی بەیەکەوە بەستراو وەک سیستەمی کارپێکردنی بازرگانی Mewayz — ئامۆژگاری پراکتیکی ڕاستەوخۆیە: پشت بە دەرئەنجام مەبەستە بۆ دەفرە بەتاڵەکان، پشکنەری جۆر هەڵبژێرە و بە توندی ڕێکبخە، و تێبینییەکانی جۆر وەک بەڵگەنامەیەک مامەڵەیان لەگەڵ بکە کە بەڕێکەوت دەتوانرێت بە ئامێر پشتڕاست بکرێتەوە. ئەو پێنج خولەکەی کە بەسەر دەبەیت لە نووسینی list[Invoice] لەبری [] چەندین کاتژمێر لە چاککردنەوەت پاشەکەوت دەکات کاتێک بنکەدراوەی کۆدەکەت قەبارە دەکات.

لەگەڵ ئەوەی PEP 696 (پارامێتەرەکانی جۆری پێشوەختە) و PEP 695 (ڕستەسازی پارامێتەرەکانی جۆر) بەردەوام بن لە نیشتنەوە لە وەشانی نوێتری پایتۆن، ئەرگونۆمیکی تایپکردنی ڕوون بەردەوام باشتر دەبێت. بۆشایی نێوان پایتۆنی "تێبینیکراو" و "تێبینی نەکراو" کەم دەبێتەوە. بەڵام تا ئەو ڕۆژە، جۆرەکانی کۆنتێنەری ڕوون یەکێکە لە بەرزترین پراکتیزەکانی ROI لە ئامرازەکانی گەشەپێدەری پایتۆندا دەمێنێتەوە — دیسیپلینێکی بچووک کە سوودی ئاوێتە دەدات لە سەرانسەری هەموو مۆدیولێکدا، هەموو خێرایەک و هەموو بڵاوکردنەوەیەکی بەرهەمهێنان.

ئەمڕۆ سیستەمی کارپێکردنی کارەکەت دروست بکە

لە فریلانسەرەکانەوە تا ئاژانسەکان، مێوایز بە 207 مۆدیۆلی یەکگرتوو 138,000+ بزنس بەهێز دەکات. بەخۆڕایی دەست پێ بکە، کاتێک گەشە دەکەیت بەرزی بکەرەوە.

دروستکردنی ئەکاونتی بێبەرامبەر →

پرسیارە زۆرەکان

بۆچی پشکنەرانی تایپ ناتوانن لەسەر جۆری لیستێکی بەتاڵ ڕێکبکەون؟

کاتێک تۆ دەنووسیت `x = []`، پشکنەری جۆر دەبێت جۆرێک بەبێ ئاماژەی ڕوون دەربخات. پشکنەرە جیاوازەکان ستراتیژی جیاواز بەکاردەهێنن: هەندێکیان `list[Any]` (لیستی هەر شتێک) دەرئەنجام دەدەن، لە کاتێکدا هەندێکی تر لەوانەیە جۆرێکی تایبەتتر بەڵام هەڵە وەک `list[None]` دەربخەن. ئەم نەبوونی ستانداردێکی گشتگیرە، هۆکارێکە بۆ ئەوەی ناکۆک بن. بۆ ئەو پڕۆژانەی کە چەندین پشکنەر بەکاردەهێنن، ئەم ناتەباییە دەتوانێت سەرئێشەیەکی گەورە بێت، شیکاری لە ئامرازێکدا دەشکێنێت کە لە ئامرازێکی تردا تێدەپەڕێت.

سادەترین ڕێگا بۆ چاککردنی هەڵەکانی دەفری بەتاڵ چییە؟

ڕاستترین چارەسەر بریتییە لە دابینکردنی تێبینییەکی جۆری ڕوون. لەبری `my_list = []`، بنووسە `my_list: list[str] = []` بۆ ئەوەی بە ڕوونی جۆری مەبەست ڕابگەیەنیت. ئەمە هەموو ناڕوونییەک بۆ پشکنەری جۆر لا دەبات، دڵنیای دەدات لە ڕەفتاری یەکگرتوو لە سەرانسەری ئامرازە جیاوازەکانی وەک mypy، Pyright و Pyre. ئەم پراکتیزەیە پێشنیار دەکرێت بۆ هەموو دەستپێکردنی دەفرە بەتاڵەکان بۆ ڕێگریکردن لە هەڵەکانی دەرئەنجام.

چۆن مامەڵە لەگەڵ دەفرە بەتاڵەکان بکەم لە ناو پێناسەکانی پۆلدا؟

ئەمە پرسێکی باو و ئاساییە چونکە تێبینییەکان لە ناو پۆلەکاندا پێویستیان بە مامەڵەکردنی تایبەت هەیە. پێویستە هاوردەکردنی `لە __future__ import annotations` یان تێبینی `ClassVar` بەکاربهێنیت ئەگەر لیستەکە مەبەست لێی تایبەتمەندی پۆل بێت. بۆ نموونە، `class MyClass: my_list: ClassVar[list[str]] = []`. بەبێ ئەمە، ڕەنگە پشکنەری جۆر کێشە بکات بۆ ئەوەی بە دروستی جۆرەکە دەربخات، کە دەبێتە هۆی هەڵە.

ئایا ئامراز هەیە بۆ یارمەتیدان لە بەڕێوەبردنی ئەم کێشە تایپکردنانە لە پڕۆژە گەورەکاندا؟

بەڵێ، پشکنەری جۆرە پێشکەوتووەکانی وەک Pyright (کە هێزی Pylance لە VS Code دەدات) بە تایبەتی باشن لە مامەڵەکردن لەگەڵ دەرئەنجامە ئاڵۆزەکان. بۆ بنکە کۆدەکانی گەورە، پلاتفۆرمەکانی وەک Mewayz (207 مۆدیۆلی شیکاری پێشکەش دەکات بە 19$/مانگ) دەتوانن پشکنینی قووڵتر و یەکگرتووتر لە جۆری دابین بکەن و یارمەتی جێبەجێکردنی پراکتیکەکانی تێبینیکردن بدەن لە سەرانسەری تیمەکەتدا، کەمکردنەوەی ئەو ناتەباییانەی کە لە بابەتەکەدا باسکراون.

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