سطح مقدماتی (Beginner Level)
تابع print() دروازه ورود به دنیای پایتون است. اگرچه ساده به نظر میرسد، اما ابزار اصلی ما برای ارتباط با کاربر و بررسی عملکرد برنامه است. در این بخش تمام حالات پایه و آرگومانهای کلیدی آن را بررسی میکنیم.
۱. چاپ متن، اعداد و متغیرها
شما میتوانید انواع دادهها را مستقیماً یا از طریق متغیرها چاپ کنید. پایتون به صورت خودکار اعداد را به رشته تبدیل کرده و نمایش میدهد.
مثال ۱: چاپ ساده و محاسبات
مثال ۲: چاپ متغیرها
مثال ۳: ترکیب رشتهها (Concatenation)
۲. چاپ چندین مقدار با جداکننده (sep)
وقتی چندین مقدار را با ویرگول (,) به print میدهید، پایتون به صورت پیشفرض بین آنها یک فاصله (Space) میگذارد. با آرگومان sep (مخفف Separator) میتوانید این رفتار را تغییر دهید.
مثال ۱: رفتار پیشفرض (فاصله)
مثال ۲: تغییر جداکننده به اسلش
مثال ۳: چاپ چند خطی با \n
۳. کنترل انتهای خط (end)
تابع print پس از چاپ محتوا، به صورت خودکار یک کاراکتر "خط جدید" (\n) اضافه میکند. این باعث میشود دستور بعدی در خط پایین چاپ شود. با آرگومان end میتوانیم این رفتار را تغییر دهیم.
مثال ۱: چاپ در یک خط (حذف Enter)
مثال ۲: استفاده از جداکننده خاص در پایان
سطح پیشرفته (Professional Level)
در برنامهنویسی حرفهای، print فقط برای نمایش متن نیست؛ بلکه ابزاری برای ایجاد رابطهای خط فرمان (CLI)، مدیریت لاگها (Logging) و نمایش وضعیت پردازشهای سنگین است.
۱. نوشتن خروجی در فایل (File Redirection)
به جای نمایش در کنسول، میتوانید خروجی را مستقیماً به یک فایل متنی هدایت کنید. این کار برای ذخیره گزارشها بسیار کاربردی است.
مثال ۱: ذخیره گزارش در فایل
# Static: Writing to a file (Requires file system write access)
with open('report.txt', 'w') as f:
print("Execution Report", file=f)
print("Status: Success", file=f)
# این کد چیزی در کنسول چاپ نمیکند، بلکه فایل report.txt را میسازد.
مثال ۲: تفکیک خطاها (Standard Error) در محیطهای حرفهای، پیامهای خطا نباید با خروجی عادی برنامه ترکیب شوند.
import sys
# چاپ پیام عادی
print("This is a normal output")
# چاپ پیام خطا (رنگ قرمز در برخی ترمینالها)
print("Critical Error: Database missing!", file=sys.stderr)
۲. بازنویسی خط و ساخت نوار پیشرفت (Dynamic Printing)
یکی از جذابترین قابلیتهای حرفهای، استفاده از کاراکتر \r (Carriage Return) است. این کاراکتر مکاننما را به ابتدای خط برمیگرداند و اجازه میدهد متن جدید را روی متن قبلی بنویسید (بدون رفتن به خط بعد).
نکته: برای دیدن نتیجه حتماً باید از flush=True استفاده کنید تا بافر بلافاصله خالی شود.
مثال ۱: شمارش معکوس در همان خط
# Static: Requires terminal supporting \r overwriting
import time
print("Starting in:", end=" ")
for i in range(5, 0, -1):
# \r مکاننما را به اول برمیگرداند
print(f"\rStarting in: {i}", end="", flush=True)
time.sleep(1)
print("\rStarting in: GO!")
مثال ۲: شبیهسازی دانلود (Loading Animation)
# Static: Visualization of a loading bar
import time
print("Downloading updates:")
for i in range(0, 101, 20):
# ساخت نوار با کاراکتر مربع
bar = "█" * (i // 10)
print(f"\r[{bar:<10}] {i}%", end="", flush=True)
time.sleep(0.5)
print("\nDownload Complete!")
۳. شخصیسازی نمایش کلاسها (__str__ vs __repr__)
وقتی یک آبجکت (Object) را چاپ میکنید، پایتون باید بداند چه چیزی را نمایش دهد. اگر متدهای خاص زیر را تعریف نکنید، فقط آدرس حافظه چاپ میشود.
__str__: نمایش خوانا برای کاربر نهایی (توسطprintصدا زده میشود).__repr__: نمایش رسمی برای برنامهنویس (توسط دیباگرها صدا زده میشود).
مثال ۱: پیادهسازی متد __str__
مثال ۲: تفاوت str و repr
اگر __str__ وجود نداشته باشد، پایتون از __repr__ استفاده میکند.