آشنایی با فانکشن از پیش ساخته شده ی پرینت در زبان برنامه نویسی پایتون


در این آموزش به بررسی فانکشن ()print می پردازیم. واضح ترین تفاوت نسخه های 2 و 3 پایتون این است که دستور پرینت در نسخه ی شماره 3 تبدیل به یک فانکشن شده است. زمانی که ما از حالت تعاملی مفسر پایتون استفاده می کنیم کافی است یک عبارت را تایپ کنیم و کلید اینتر را بزنیم تا فوراً نتیجه ی ارزیابی آن عبارت را در خروجی ببینیم. به طور مثال عبارت های زیر را در پنجره ی شِل آیدل وارد کنیم تا نتیجه ی ارزیابی آن ها را ببینیم:

>>> 8 * (5 + 3) - 110 / 16
57.125
>>> "SokanAcademy.com"
'SokanAcademy.com'

این ویژگی محیط تعاملی برای زمانی که می خواهیم سینتکس یک عبارت را بررسی کنیم و یا نتیجه ی یک دستور محاسباتی را پیدا کنیم بسیار کارآمد است. حال اگر همین دستورات را در یک فایل وارد کنیم -فایلی مثلا تحت عنوان temp.py- و پس از ذخیره سازی آن به صورت یک اسکریپت آن را اجرا کنیم، می بینیم حاصل ارزیابی عبارت ها هم چون حالت تعاملی نمایش داده نمی شود. در این حالت اگر بخواهیم حاصل ارزیابی این عبارت ها در خروجی نمایش داده شود، می توانیم از فانکشن ()print استفاده کنیم و عبارت ها را به صورت زیر در اسکریپت وارد کنیم:

print(8 * (5 + 3) - 110 / 16)
print("SokanAcademy.com")

پنجره ی خروجی مرتبط با اجرای اسکریپتی که شامل دستورات بالا است را در زیر مشاهده می کنید:

همان طور که در تصویر مشخص است، وقتی استرینگ "SokanAcademy.com" را در حالت تعاملی وارد می کنیم در خروجی برنامه یک استرینگ را مشاهده می کنیم -قسمت بالا- اما وقتی از فانکشن ()print برای چاپ همان استرینگ استفاده می کنیم مفسر پایتون نتیجه ی ارزیابی را دیگر در میان علامت های نقل قول ' ' نمایش نمی دهد، بلکه نمایش آن به گونه ای است که برای ما خواناتر و به متن های چاپی نزدیک تر باشد. دقت کنید که در زمان کار در حالت تعاملی نیز می توان از فانکشن ()print استفاده کرد.

نکته
در صورتی که از فانکشن ()print بدون دادن آرگومان ورودی به آن استفاده کنیم، در خروجی یک خط خالی چاپ خواهد شد. در حقیقت حاصل فراخوانی فانکشن ()print به این صورت ایجاد یک آبجکت None یا «تهی» است.

برنامه ی زیر را در نظر بگیرید:

x = 3
y = 5
print('The sum of', x, 'plus', y, 'is', x+y, '.')

ما می توانیم هر دنباله ای از عبارت ها که با کاما (,) از هم جدا شده باشند را به عنوان آرگومان به فانکشن پرینت بدهیم. این فانکشن هم آرگومان مورد نظر را به عنوان استرینگ در خروجی چاپ خواهد کرد؛ به این صورت که هر یک از عبارت ها را با یک فاصله از هم جدا می کند. برای مثال، در دستورات بالا می بینیم که دنباله ای شامل 7 عبارت به عنوان آرگومان فانکشن پرینت وارد شده است. نتیجه ی اجرای این برنامه را در زیر می بینید:

The sum of 3 plus 5 is 8 .

همان طور که در خروجی می بینید، مفسر پایتون عبارت هایی که در آرگومان آن قرار گرفته است را به ترتیب و با یک فاصله از هم چاپ کرده است. در این مثال دو نکته وجود دارد. اولاً در این مثال به جای هر یک از متغیرها مقدار آن ها در نظر گرفته شده است، یعنی به جای متغیر x عدد صحیح 3 و به جای متغیر y مقدار صحیح 5 را قرار می دهد. به علاوه، در محاسبه ی عبارت x+y باز هم مقدار مقدار منتسب به دو متغیر x و y در نظر گرفته شده است. در ثانی مفسر پایتون برای اجرای دستور پرینت در نهایت همه ی عبارت ها را تبدیل به یک استرینگ می کند.

در واقع هر چیزی که به عنوان آرگومان فانکشن پرینت قرار می گیرد، برای چاپ تبدیل به استرینگ می شود. برای مثال اگرچه x متغیری است که به عدد صحیح 3 ارجاع می دهد، اما وقتی به عنوان آرگومان پرینت وارد می شود، در نهایت مقدار 3 تبدیل به یک استرینگ می شود. با این وجود دقت کنیم که متغیر x هم چنان به عدد صحیح 3 نیز ارجاع می دهد. پیش از به پایان رساندن این آموزش، نیاز است تا مثال کاربردی دیگری را نیز مد نظر قرار دهیم:

>>> age = 25
>>> print('I am'+ age+ 'years old.')
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in 
    print('I am'+ age+ 'years old')
TypeError: Can't convert 'int' object to str implicitly

همان طور که می بینید، در برنامه ی بالا عدد صحیح 25 به متغیر age منسوب شده است، و آن گاه از این متغیر در آرگومان تابع پرینت استفاده کرده ایم. انتظار داریم با اجرای برنامه، عبارت .I am 25 years old در خروجی چاپ شود، اما همان طور که می بینید مفسر پایتون پیغام خطایی را در خروجی نمایش داده است. علت ایجاد این خطا در برنامه این است که عملگر + یا برای انجام عملیات جمع استفاده می شود که در این صورت دو عملوند از نوع اعداد را می گیرد یا برای اتصال دو داده ی استرینگی به کار گرفته می شود؛ اما در این جا یکی از عملوند ها از نوع استرینگ و دیگری از نوع عدد صحیح است که باعث بروز خطا شده است. برای مثال اگر دستور پرینت را به صورت زیر می نوشتیم خطایی ایجاد نمی شد و هر سه استرینگ استفاده شده در آرگومان تابع بدون فاصله به هم متصل می شدند:

>>> print('I am '+ '25 '+ 'years old.')
I am 25 years old.

برای رفع خطای بوجود آمده در زمان استفاده از متغیری مانند age در برنامه از علامت , به جای عملگر + استفاده می کنیم:

>>> print('I am', 25, 'years old.')
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
soldier
soldier
با سلام و خسته نباشید لطفا به سوالات دوستان پاسخ دهید
reza.ag
reza.ag
سلام
وقتی دو تا دستور پرینت مینویسم پرینت بعدی رو در خط بعد در صفحه نمایش نشون میده(در pycharm) چیکار میشه کرد دستور بعدی رو خودش نبره سطر بعد و در همون سطر قبلی نمایش بده؟بدون انداختن حتی یک فاصله درست چسبیده به دستور پرینت قبلی؟
کاربر میهمان
aminمن یک کاربر مهمان هستم
عالییییییییییییی
mortaza
mortaza
print("i have %d years old"%(10))
از کد بالا یه تست بگیرید --- و این رو هم اضافه کنید به توضیحات مطلب
naiem
naiem
age=25
اگر یا گاما چدا کنیم متغیر هم جواب میده