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 در کنسول دیده شود. ورودی عدد صحیح است و چاپ قرارداد تابع نیست.