حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش دیباگ و تست‌نویسی در پایتون؛ رفع خطا با تمرین

تفاوت print و return در پایتون؛ خروجی قابل آزمون تابع

دیباگ تابع و فهرست در پایتون · 0٪

print برای نمایش متن در خروجی کنسوله؛ return مقدار رو به فراخواننده تحویل می‌ده. دیدن یک عدد درست روی صفحه به این معنی نیست که تابع همون عدد رو برگردونده. اگر تابع به پایان برسه و return نداشته باشه، مقدار بازگشتی None است. این تفاوت موقع ترکیب تابع‌ها و نوشتن آزمون خیلی زود مهم می‌شه.

مثال تابعی می‌سازه که دو برابر یک عدد رو تحویل می‌ده و آزمون می‌تونه مستقیم مقایسه‌اش کنه. خطای رایج ذخیره‌کردن نتیجه تابعی است که فقط print داره؛ چاپ رخ می‌ده اما متغیر مقصد None می‌گیره. برای دیباگ می‌تونی موقتاً چیزی رو چاپ کنی، ولی قرارداد تابع باید مستقل از اون حفظ بشه. خروجی‌های این دوره داده JSON‌پذیر هستن و معیارها مقدار بازگشتی رو می‌سنجن. پس به‌جای جست‌وجوی عدد در صفحه، از خودت بپرس فراخواننده دقیقاً چه چیزی دریافت می‌کنه. تابع کوچک با return روشن، آزمون‌نوشتن و پیدا‌کردن علت خطا رو ساده‌تر می‌کنه.

✍️ مثال حل‌شده:

def doubled(number):
    return number * 2

actual = doubled(4)
assert actual == 8

حالا نوبت توئه: تابع squared(number) در نمونه مقدار number*number را برمی‌گرداند؛ squared(3) باید 9 بدهد. این گام آموزشی است: توضیح بده چرا جایگزینی return با print باعث می‌شود actual برابر None شود، حتی اگر عدد 9 در کنسول دیده شود. ورودی عدد صحیح است و چاپ قرارداد تابع نیست.

فعالیت شما

تابع squared(number) در نمونه مقدار number*number را برمی‌گرداند؛ squared(3) باید 9 بدهد. این گام آموزشی است: توضیح بده چرا جایگزینی return با print باعث می‌شود actual برابر None شود، حتی اگر عدد 9 در کنسول دیده شود. ورودی عدد صحیح است و چاپ قرارداد تابع نیست.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

def squared(number):
    return number * number