من برای سالهای زیادی از زبان های پویا استفاده کرده ام - Perl، Ruby و Python. من عاشق انعطاف پذیری و بیاناتی هستم که چنین زبان هایی را ارائه می دهند. به عنوان مثال، می توانم یک تابع را تعریف کنم که عدد را ارزیابی می کند:
تابع فوق بر روی هر تکراری کار می کند که اعداد را باز می کند. بنابراین من می توانم در لیست بالا، قاعده و یا مجموعه ای از اعداد اجرا شود. من حتی می توانم آن را در یک فرهنگ لغت اجرا کنم که کلید آن تمام اعداد است. خیلی عالی، درست است؟
بله، اما برای دانش آموزان من که به زبان استثنایی استفاده می شود، این بسیار سخت است که برای رسیدن به آن استفاده شود. پس از همه، چگونه می توانید اطمینان حاصل کنید که هیچ کس یک رشته یا تعدادی رشته را به شما منتقل نمی کند؟ اگر فهرستی دریافت کنید که برخی از عناصر عددی هستند اما نه همه آنها؟
برای چندین سال من چنین نگرانی ها را رد کردم. پس از همه، زبان های پویا برای مدت طولانی در اطراف بوده اند و کارهای خوبی انجام داده اند. و واقعا، اگر مردم این گونه انواع اشتباهات مربوط به عدم هماهنگی را داشته باشند، شاید بتوان آنها را بیشتر مورد توجه قرار داد. به علاوه، اگر شما آزمایش کافی داشته باشید، احتمالا به خوبی خواهید بود.
اما چون برنامه نویسی Python (و دیگر زبانهای پویا) به شرکتهای بزرگ تبدیل شده است، من به طور فزاینده ای متقاعد شده ام که چیزی برای چک کردن نوع وجود دارد. به طور خاص، این واقعیت که بسیاری از تازه واردان پایتون در حال کار بر روی پروژه های بزرگ هستند، که در آن بسیاری از قطعات نیاز به همکاری دارند، برای من روشن است که نوعی چک کردن نوع می تواند مفید باشد.
چطور می توانید این نیازها را تعادل کنید؟ به این ترتیب، چگونه میتوانید پایتون را به عنوان زبان تایپ شده به طور پویا لذت ببرید، در عین حال به طور همزمان احساس ثبات ثبات static را اضافه کنید؟
یکی از محبوب ترین پاسخ ها یک سیستم شناخته شده به عنوان mypy است که استفاده از حاشیه نویسی نوع پایتون 3 را برای اهداف خود می گیرد. استفاده از mypy بدین معناست که شما می توانید Python را به صورت عادی بنویسید و آن را اجرا کنید، به تدریج با تایپ نوع استاتیک در طول زمان و چک کردن آن در خارج از اجرای برنامه خود.
در این مقاله، من شروع به بررسی mypy و نحوه استفاده از آن برای بررسی مشکلات در برنامه های شما می کنم. من توسط mypy تحت تاثیر قرار گرفته ام، و من معتقدم که شما احتمالا خواهید دید که آن را در تعداد زیادی از مکان ها مستقر کرده است، به هیچ وجه جزئی نیست، زیرا این اختیاری است و به همین طریق توسعه دهندگان را قادر می سازد تا به هر میزان که لازم می دانند، از آن استفاده کنند، در طول زمان، همچنین.
تایپ پویا و قوی
در پایتون، کاربران نه تنها با تایپ پویا، بلکه از تایپ قوی نیز لذت می برند. "پویا" به این معنی است که متغیرها نوعی ندارند، اما این مقادیر انجام می شود. بنابراین می توانید بگویید:
همانطور که می بینید، می توانم کد بالا را اجرا کنم، و فقط کار خوبی خواهد کرد. این به خصوص مفید نیست، اما هرگز حتی یک تدوین اولین پاس در یک زبان استاتیکی کامپایل نمی شود. به همین دلیل است که در چنین زبانهایی، متغیرها دارای انواع هستند - به این معنی که اگر شما سعی کنید یک عدد صحیح را به یک متغیر رشته اختصاص دهید، یک خطا دریافت خواهید کرد.
در زبان دینامیک، در مقابل، متغیرها در همه انواع ندارند. اجرای تابع نوع، همانطور که در بالا انجام شد، در واقع نوع متغیر را نمیدهد، بلکه نوع دادههایی که متغیر در حال حاضر آن را ارزیابی میکند.
فقط به این دلیل که یک زبان به صورت پویا تایپ می شود، به این معنا نیست که این کاملا بی رحمانه و غم انگیز است، به شما اجازه می دهد تا هر کاری که بخواهید انجام دهید. (و بله، این اصطلاح فنی است.) به عنوان مثال، می توانم این را امتحان کنم:
این کد یک خطا را ایجاد می کند، زیرا پایتون نمی داند که چگونه می توان عدد صحیح و رشته را با هم ترکیب کرد. این می تواند دو عدد صحیح (و یک نتیجه عدد صحیح) یا دو رشته (و نتیجه رشته ای) را اضافه کند، اما نه ترکیبی از دو.
عملکرد mysum که پیشتر شما را 0 را به متغیر "total" محلی اختصاص دادید، و سپس هر یک از عناصر اعداد را به آن اضافه می کند. این به این معنی است که اگر اعداد حاوی عدد غیر عادی باشند، شما در معرض مشکل هستید. خوشبختانه mypy قادر به حل این مشکل برای شما خواهد بود.
- ۰ ۰
- ۰ نظر