برای اشکال زدایی کد پایتون از چاپ یا Logger استفاده نکنید

شکل ۱: دیباگر پایتونمنتشر شده در towardsdatascience به تاریخ ۲۶ جولای ۲۰۲۱ لینک منبعStop using Print or Logger to Debug your Python Codeاشکال زدایی کد یک کار مهم اما خسته‌کننده برای هر برنامه‌نویس است. انجام اشکال‌زدایی کد زمانی ضروری است که خروجی کد شما آن طور که انتظار می‌رود نباشد و یا خطایی رخ دهد. اشکال‌زدایی فرآیند پیدا کردن و اصلاح خطاها در برنامه است.خطاهای نحوی و خطاهای معنایی دو نوع از err هستند که برنامه‌نویس در برنامه خود با آن‌ها مواجه می‌شود. خطاهای نحوی به دلیل اشتباه گرفتن دستورها یا کد، خطای تورفتگی ایجاد می‌شوند و به راحتی با پیروی از دستورالعمل‌های پسگرد پایتون ثابت می‌شوند. خطاهای معنایی زمانی ایجاد می‌شوند که خروجی کد آن طور که انتظار می‌رود نباشد که ممکن است به دلیل اجرای اشتباه الگوریتم ایجاد شود.رسیدگی به خطاهای نحوی آسان است، اما گاهی رسیدگی به خطاهای معنایی دشوار و زمان‌بر است. برنامه‌نویس باید از طریق تنظیم کد عمل کند و اشکال را برطرف کند.معمولا، توسعه دهندگان از دستورهای چاپ استفاده می‌کنند و یا برای اشکال‌زدایی بین دستگاه‌های کد، log هایی را اضافه می‌کنند. کتابخانه‌های مختلف با منابع باز پایتون برای اشکال‌زدایی وجود دارند. در این مقاله، ما در مورد یکی از این کتابخانه‌های Icecream بحث خواهیم کرد، که می‌تواند به رفع اشکال کد پایتون شما بدون وارد کردن تعداد زیادی متن چاپی و لاگ کمک کند.بسته Icecream:آیسکریم؟ بله، این نام یک بسته پایتون است که به توسعه دهندگان کمک می‌کند تا کد پایتون خود را اشکال زدایی کنند. اینIcecream به توسعه دهندگان کمک می‌کند تا از نوشتن چندین چاپ و گزارش برای رفع اشکال در حین اشکال‌زدایی خلاص شوند. در عوض، آن‌ها می‌توانند از کلاس ic از بسته Icecream استفاده کنند.نصب:بسته Icecream را می توان با استفاده از PyPl نصب کرد.pip install icecreamو کلاس ic را برای اشکال زدایی وارد کنید. from icecream import icکاربرد:دستور Icecream می‌تواند هر دو عبارت / نام‌های متغیر و ارزش‌های آن‌ها را چاپ کند. قالب خروجی را نیز می توان قالب‌بندی کرد و همچنین می‌تواند زمینه‌های برنامه مانند نام فایل، شماره خط، و تابع والد را نیز شامل شود.بررسی متغیرها و توابع:تابع ic() از بستهIcecream خود را بررسی می‌کند و استدلال‌های خود و ارزش‌های آن استدلال‌ها را چاپ می‌کند.شکل ۲: (عکس از نویسنده)فقط به ic() یک متغیر، بیان، یا تابع بدهید، و شما این کار را انجام می‌دهید.رسیدگی به اجرا:اغلب توسعه دهندگان از لاگر یا بیانیه چاپ برای دانستن بخش‌های کد در حال اجرا و دانستن جریان عملکرد استفاده می‌کنند. با استفاده از تابعic() در هر فراخوانی یا حلقه تابع می توان اجرای کد را در حین اشکال‌زدایی ردیابی کرد.برای بررسی اجرای تابع پایتون، تابع سفارشی را به عنوان یک پارامتر به ic() منتقل کنید. ic() آرگومان تابع عرف را بر می‌گرداند، از این رو به راحتی می توان آن را در کد از پیش موجود پیاده‌سازی کرد.شکل ۳: (عکس از نویسنده) ، یک تابع فراخوانی با ic ()فرد به راحتی می‌تواند اجرای تابع را با مشاهده تابع چاپ تابعic() ردیابی کند.مزایای اضافی:می توان خروجی تابع ic() را پیکربندی و سفارشی کرد. با استفاده از ic.configureOutput() تابع، می توان یک پیشوند اضافه کرد، تابع خروجی را تغییر داد، استدلال‌های جمله خروجی را سفارشی کرد، و زمینه‌های برنامه مانند نام فایل، شماره خط و تابع والد را شامل یا حذف کرد.def unixTimestamp():return '%i |> ' % int(time.time())# add unix time stamp as prefix ic.configureOutput(prefix=unixTimestamp)بعد از اینکه اشکال‌زدایی کد را کامل کردید، می‌توانید تمام فراخوانی تابع ic() را حذف کنید یا فقط خروجی با استفاده از تابع ic.disable() را غیرفعال کنید. بعدا می‌تواند با استفاده از تابع ic.enable() دوباره فعال شود.نتیجه‌گیری:بسته Icecream می‌تواند به جای نوشتن چندین چاپ یا عبارت لوگ برای اشکال‌زدایی کد مورد استفاده قرار گیرد. ساختارهای داده فرمت خروجی شامل اسامی عبارات / متغیرها و مقادیر آن‌ها و سایر زمینه‌های برنامه هستند. نوشتن دستور چاپ یا لاگرها برای تولید تمام این اطلاعات در حالی که اشکال‌زدایی یک کار خسته‌کننده است، اما آیسکریم تمام این اطلاعات را تنها در چند خط از اجرای کد ارائه می‌دهد.به همراه پایتون، پیاده‌سازی بستهIcecream در ۱۲ زبان برنامه‌نویسی به همراه C + +، جاوا، روبی، R، Go و غیره در دسترس است.این متن با استفاده از ربات ترجمه مقالات علم داده ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.