آیا تا به حال از دستور ()print برای دیباگ و رفع مشکلات کدهای پایتون خود استفاده کردهاید؟ احتمالاً پاسختان آری است. IceCream یا به اختصار IC روند دیباگ کردن با این روش را برای شما راحتتر میکند. در واقع IceCream به خوبی آزمایش شده، دارای لایسنس از منابع مجاز است و از Python2 ،PyPy3 ،PyPy2 و Python3 پشتیبانی میکند (PyPy یک جایگزین برای پایتون است که سرعت عمل بیشتری نسبت به این زبان دارا است).
بررسی آرگومانها
آیا تا به حال متغیرها و یا دستوراتی را برای عملیات دیباگ کردن خود چاپ کردهاید؟ اگر تا به حال چنین چیزی را تایپ کرده باشید:
print(foo('123'))
یا به صورت دقیقتر:
print("foo('123')", foo('123'))
در این حالت میتوانید از ()ic کمک بگیرید. با در نظر گرفتن آرگومانهای ورودی، ()ic هم آرگومانهای ورودی و هم مقادیر آنها را برای شما چاپ میکند. به عنوان مثال داریم:
from icecream import ic
def foo(s):
return s[::-1]
ic(foo('123'))
به عنوان خروجی داریم:
ic| foo('123'): 321
به عنوان مثالی دیگر:
d = {'d': {1: 'one'}}
ic(d['d'][1])
class klass():
attr = 'yep'
ic(klass.attr)
که خروجی زیر را در پی خواهد داشت:
ic| d['d'][1]: 'one'
ic| klass.attr: 'yep'
فقط کافی است که به عنوان ورودی ()ic، یک متغیر یا یک دستور بدهید تا کار تکمیل شود.
استفاده از IceCream بدون آرگومانهای ورودی
آیا تا به حال در میان کدهای خود دستوری را اضافه کردهاید که به شما نشان دهد کدام بخش از کد اجرا شده و کدام بخش اجرا نشده است؟ برای مثال، آیا تا به حال دستوری مانند کدهای زیر را برای عملیات دیباگ کردن در میان کدهای خود نوشتهاید؟
def foo():
print(0)
first()
if expression:
print(1)
second()
else:
print(2)
third()
()ic اینجا نیز به کمک شما میآید؛ در واقع وقتی که بدون هیچ آرگومانی از ()ic استفاده کنیم، این تابع نام فایل و شمارهٔ خطی که اشکالی در آن وجود داشته را فراخوانی کرده و برای شما چاپ میکند. همانند کد زیر:
from icecream import ic
def foo():
ic()
first()
if expression:
ic()
second()
else:
ic()
third()
که خروجی زیر را در پی خواهد داشت:
ic| example.py:4
ic| example.py:11
فقط کافی است ()ic را فراخوانی کنید و کار تمام است. به همین سادگی!
طریقهٔ نصب IceCream
نصب IceCream از طریق pip به آسانی صورت میگیرد. کافی است در محیط ترمینال لینوکس و مک یا CMD ویندوز (البته با دسترسی ادمین) دستور زیر وارد کنید:
$ pip install icecream
لایبرری IceCream در حال حاضر فقط برای زبان پایتون موجود است، اما میتوان در هر زبانی از آن لذت برد. هدف IceCream این است که با استفاده از تابع ()ic بتوان در هر زبانی به راحتی عملیات دیباگ کردن را انجام بدهیم و خروجی را مانند تابع ()print مشاهده کنیم. برای آشنایی بیشتر با این لایبرری اپنسورس، به ریپازیتوری گیتهاب IceCream مراجعه نمایید.