۳ ابزار برای پیگیری و تصویرسازی اجرای کد پایتون شما

منتشر‌شده در towardsdatascience به تاریخ ۲۹ آوریل ۲۰۲۱
لینک منبع: 3 Tools to Track and Visualize the Execution of your Python Code

آیا تا به حال یک خروجی خطا مانند زیر دیده‌اید:

2 divided by 1 is equal to 2.0.
Traceback (most recent call last):
File "loguru_example.py", line 17, in <module>
divide_numbers(num_list)
File "loguru_example.py", line 11, in divide_numbers
res = division(num1, num2)
File "loguru_example.py", line 5, in division
return num1/num2
ZeroDivisionError: division by zero

و آیا همانطور که در اینجا نشان‌ داده شده ‌است، درک خروجی می‌تواند کمی راحت‌تر باشد؟

شکل ۱. کد پایتون
شکل ۱. کد پایتون

همچنین ممکن است بخواهید مجسم کنید که کدام خطوط کد در حال اجرا هستند و چند بار در زمان واقعی اجرا می‌شوند:

شکل ۲. کد در حال اجرای پایتون
شکل ۲. کد در حال اجرای پایتون

اگر اینطور است، این مقاله ابزارهایی برای انجام دقیق موارد بالا به شما خواهد داد. این سه ابزار عبارتند از:

  • ابزار Loguru - استثناهای بهتر را چاپ کنید.
  • ابزار snoop - خطوط کدی را که در یک تابع اجرا می‌شوند چاپ کنید.
  • ابزار heartrate - اجرای یک برنامه پایتون را در زمان واقعی تجسم کنید.

و تنها چیزی که برای استفاده از این ابزارها لازم است یک خط کد است!

ایزار Loguru - چاپ استثناهای بهتر

ابزار Loguru یک کتابخانه است که هدف آن لذت بردن از ورود به سیستم در پایتون است. لوگورو کارکردهای جالب بسیاری دارد، اما یکی از کارکردهایی که بیش‌ترین فایده را دارد، توانایی گرفتن خطاهای غیرمنتظره و نمایش این است که کدام مقدار از یک متغیر باعث مواجه شدن کد شما با شکست می‌شود.

برای نصب لوگورو، این جمله را تایپ کنید

pip install loguru

برای درک اینکه Loguru چگونه می‌تواند مفید باشد، تصور کنید که شما دارای 2 تابع تقسیم و تقسیم_اعداد هستید و تابع divide_numbers (تقسیم_اعداد) اجرا می‌شود. توجه داشته باشید که ترکیبات ([2،1،0]، 2) تبدیل به [(2، 1)، (2، 0)، (1، 0)] می‌شود. پس از اجرای کد بالا، با این خطا مواجه می‌شویم:

2 divided by 1 is equal to 2.0.
Traceback (most recent call last):
File "loguru_example.py", line 17, in <module>
divide_numbers(num_list)
File "loguru_example.py", line 11, in divide_numbers
res = division(num1, num2)
File "loguru_example.py", line 5, in division
return num1/num2
ZeroDivisionError: division by zero

با توجه به خروجی، ما می‌دانیم که خط بازگشت num1 / num2 جایی است که خطا رخ می‌دهد، اما نمی‌دانیم کدام مقادیر num1 و num2 باعث خطا می‌شود. خوشبختانه با افزودن دکوراتورLoguru’s logger.catch این امر به راحتی قابل پیگیری است

خروجی:

شکل ۳. کد پایتون منبع
شکل ۳. کد پایتون منبع
مطالعه‌ مقاله‌ ۹سرور گوناگون دیسکورد برای ریاضیات، پایتون و علوم داده که امروزه به آن‌ها نیاز دارید! توصیه می‌شود.

با اضافه کردن logger.catch، درک استثناها بسیار آسان‌تر است! معلوم شد که خطا هنگام تقسیم 2 توسط 0 رخ می‌دهد.

ابزارsnoop- خطوط کد اجرا شده را به صورت تابعی چاپ کنید

اگر هیچ خطایی در کد وجود نداشته باشد، اما ما بخواهیم بفهمیم در کد چه اتفاقی می‌افتد، چه می‌شود؟ آن وقت است که اسنوپ به کارتان می‌آید. اسنوپ یک بسته پایتون است که خطوط کد اجرا شده همراه با مقادیر هر متغیر را با اضافه کردن تنها یک دکوراتور چاپ می‌کند.

برای نصب اسنوپ، این جمله را تایپ کنید:

pip install snoop

بیایید تصور کنیم تابعی به نام فاکتوریل داریم که فاکتوریل یک عدد صحیح را پیدا می‌کند.

خروجی:

The factorial of 5 is 120

برای درک اینکه چرا خروجی فاکتوریل (5)، 20 است، می‌توانیم دکوراتور اسنوپ را به عملکرد فاکتوریل اضافه کنیم.

خروجی:

شکل ۴. افزودن دکوراتور اسنوپ به عملکرد فاکتوریل
شکل ۴. افزودن دکوراتور اسنوپ به عملکرد فاکتوریل
ممکن است به مطالعه مقاله تابع نقشه در پایتون علاقمند باشید.

در خروجی بالا، می‌توانیم مقادیر متغیرها و خطوط کد را مشاهده کنیم. اکنون ما می‌توانیم درک کنیم که چگونه بازگشت بسیار بهتر عمل می‌کند!

ابزار heartrate - اجرای یک برنامه پایتون را در زمان واقعی تجسم کنید

اگر می‌خواهید مجسم کنید که کدام خطوط و چند مرتبه اجرا می‌شوند، سعی کنید تمرین کنید. ابزار heartrate نیز توسط خالق Snoop ایجاد شده است. برای نصب heartrate، این جمله را تایپ کنید:

pip install heartrate

حال بیایید heartrate.trace (مرورگر = درست) را به کد قبلی خود اضافه کنید. با این کار یک پنجره مرورگر باز می شود که تجسم فایلی را که trace () نامیده شده است نمایش می‌دهد. باید زمانی که کد بالا را اجرا می‌کنید یک مرورگر جدید ظاهر شود. در غیر این صورت، به 9999 http: / / lochost: بروید. شما باید خروجی را مانند زیر ببینید:

شکل ۵. خروجی کد
شکل ۵. خروجی کد

چه خوب! میله‌ها خطوط ضربه خورده را نشان می‌دهند. میله‌های بلندتر به معنی برخورد بیشتر و رنگ‌های روشن‌تر به معنی تازگی بیشتر هستند. از خروجی فوق می‌توان دریافت که برنامه اجرا می‌شود:if x==1 ۵ بار

  • اگرx==1 ، پنج مرتبه
  • بازگشت ۱ یک مرتبه
  • بازگشت (x * فاکتوریل (1x-) ( ۴بار

خروجی منطقی است زیرا مقدار اولیه x برابر ۵ است و تابع تا زمانی که x برابر با ۱ شود، به صورت تکراری نامیده می‌شود. حال بیایید ببینیم که تجسم اجرای یک برنامه پایتون در زمان واقعی با استفاده از heartrate چگونه است. بیایید (۰.۵) sleep را اضافه کنیم تا برنامه کمی آهسته‌تر اجرا شود و num را به ۲۰ افزایش دهد.

شکل ۶. خروجی در Heartrate
شکل ۶. خروجی در Heartrate

چه عالی! ما می‌توانیم ببینیم که کدام خطوط کد در حال اجرا هستند و هر کدام از آن‌ها چند بار در زمان واقعی اجرا شده‌اند.

نتیجه‌گیری

تبریک! شما در حال حاضر ۳ ابزار برای پیگیری و تجسم اجرای کد پایتون خود یاد گرفته‌اید. امیدوارم هنگام استفاده از این سه ابزار، اشکال‌زدایی برای شما دردسر کمتری باشد. از آنجا که این ابزارها تنها به یک خط کد نیاز دارند، چرا آن‌ها را امتحان نکنید که ببینید چقدر مفید هستند؟

این متن با استفاده از ربات ترجمه مقاله علم داده ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.
مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.