در این آموزش با فانکشن ()print
آشنا خواهیم شد که یک فانکشن به اصطلاح Built-in در زبان برنامهنویسی پایتون است و بارزترین تفاوت نسخۀ 2 و 3 این زبان نیز مربوط به دستور print
میباشد به طوری که در نسخۀ 3 به صورت ()print
تغییر یافته است.
همانطور که در آموزشهای پیشین اشاره کردیم، در کار با حالت تعاملی مفسر پایتون عبارتی را تایپ کرده و کلید اینتر را فشار میدهیم که منجر به اجرای دستور مد نظر شده و فوراً نتیجۀ ارزیابی آن در خروجی مشاهده میشود. برای مثال، عبارتهای زیر را در پنجرۀ شِل IDLE وارد میکنیم تا نتیجۀ ارزیابی آنها را ببینیم:
>>> 8 * (5 + 3) - 110 / 16
57.125
>>> "SokanAcademy.com"
'SokanAcademy.com'
در واقع، استفاده از حالت تعاملی مفسر پایتون در شرایطی مفید واقع میشود که بخواهیم صحت سینتکس یک دستور و کاربرد آن را بررسی کرده و نتیجۀ حاصل از محاسبات مربوط به آن را مشاهده کنیم اما اگر دستورات مربوط به مثال فوق را در فایلی دلخواه مثلاً تحت عنوان temp.py
نوشته و ذخیره کنیم سپس آن را در حالت اسکریپتی اجرا کنیم، خواهیم دید که نتیجۀ حاصل در خروجی همچون حالت تعاملی نمایش داده نمیشود که اگر بخواهیم خروجی حاصل از اجرا قابلمشاهده باشد، میتوانیم از فانکشن ()print
استفاده کرده و دستورات فوقالذکر را به صورت زیر ریفکتور کنیم:
print(8 * (5 + 3) - 110 / 16)
print("SokanAcademy.com")
در ادامه پنجرۀ خروجی مربوط به اجرای اسکریپتی دستورات فوق را مشاهده میکنید:
نکتۀ قابلتوجه اینکه وارد کردن استرینگ "SokanAcadem.com" در حالت تعاملی منجر به ریترن شدن یک خروجی در قالب استرینگ میشود اما این در حالی است که با بهکارگیری فانکشن ()print
برای چاپ همان استرینگ، نتیجۀ حاصل دیگر داخل علائم ' '
نمایش داده نمیشود بلکه خروجی یک عبارت خوانا و قابلفهم برای انسان بوده و نزدیک به متنهای چاپی است. همچنین توجه داشته باشیم که فانکشن ()print
را در حالت تعاملی نیز میتوان مورد استفاده قرار داد.
نکته |
در صورتی که از این فانکشن بدون دادن آرگومان ورودی استفاده کنیم، در خروجی یک خط خالی چاپ خواهد شد بدین دلیل که فراخوانی فانکشن پرینت بدون آرگومان ورودی منجر به ایجاد یک آبجکت None (تهی) میشود. |
حال مثالی دیگر را به منظور درک بهتر کاربرد این فانکشن بررسی میکنیم به طوری که خواهیم داشت:
x = 3
y = 5
print('The sum of', x, 'plus', y, 'is', x + y, '.')
همانطور که در کد فوق میبینید، فانکشن ()print
این قابلیت را در اختیار دولوپرها قرار میدهد تا بتوانند دنبالهای از عبارتها را به عنوان آرگومان ورودی به آن بدهند به طوری هر یک از آرگومانهای مد نظر با علامت ,
از هم جدا میشوند که در نهایت با یکدیگر به اصطلاح Concate (الحاق) شده و در قالب یک استرینگ در خروجی چاپ میشوند. برای مثال، در کد فوق دنبالهای شامل هفت عبارت را به عنوان آرگومان ورودی به فانکشن پرینت دادهایم و نتیجۀ حاصل از اجرای برنامه در ادامه آورده شده است:
The sum of 3 plus 5 is 8 .
همانطور که میبینید، مفسر پایتون هر یک از مقادیر منتسب به پارامترهای ورودی را به ترتیب و با یک فاصله از هم چاپ کرده است اما چند نکته در این مثال وجود دارد که در ادامه هر یک از آنها را بیان میکنیم:
- به جای هر یک از متغیرهای x
و y
مقدار معادل آنها در نظر گرفته شده است.
- در محاسبۀ دستور x + y
باز هم مقدار مقدار منتسب به دو متغیر x
و y
در نظر گرفته شده است.
- و در نهایت مفسر پایتون برای اجرای دستور پرینت مقادیر مربوط به تمامی پارامترهای ورودی را تبدیل به یک استرینگ میکند.
در واقع، هر چیزی که به عنوان آرگومان ورودی به فانکشن ()print
داده میشود تبدیل به استرینگ شده و در خروجی چاپ خواهد شد و همانطور که در مثال قبل دیدیم، x
متغیری است که عدد صحیح 3 به آن ارجاع میدهد اما با ورود به فانکشن ()print
تبدیل به یک استرینگ شد (البته توجه داشته باشیم که متغیر 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
اختصاص داده و در ادامه آن را عنوان آرگومان ورودی به فانکشن ()print
دادهایم و انتظار داریم که با اجرای برنامه استرینگ «.I am 25 years old» در خروجی چاپ شود اما همانطور که میبینید مفسر پایتون پیغام خطایی را در خروجی نمایش داده است که دلیل ایجاد خطا این است که عملگر +
برای انجام عملیات جمع روی مقادیر عددی مورد استفاده قرار میگیرد که در این صورت هر دو عملوند میباید از نوع عدد باشند و همچنین برای الحاق دو عبارت استرینگ نیز میتوان عملگر +
را به کار گرفت که در این مورد نیز هر دو عملوند باید از نوع استرینگ باشند اما در مثال فوق یکی از عملوندها از نوع استرینگ و دیگری از نوع عدد صحیح است که همین مسئله منجر به بروز خطا شده است. حال مثال فوق را به صورت زیر تغییر میدهیم به طوری که تمامی آرگومانهای ورودی از نوع استرینگ بوده و منجر به ایجاد ارور نخواهد شد:
>>> print('I am '+ '25 '+ 'years old.')
I am 25 years old.
همانطور که میبینید دستور پرینت بدون خطا اجرا شده و استرینگهای ورودی را با هم کانکت کرده و در خروجی نمایش میدهد. حال قصد داریم تا متغیری همچون age
را به عنوان پارامتر ورودی به فانکشن ()print
بدهیم که در چنین مواردی هر یک از پارامترهای مذکور به جای عملگر +
باید با علامت ,
از یکدیگر جدا شوند که در همین راستا کد مربوط مثال قبل را بدین صورت تغییر میدهیم:
>>> print('I am', age, 'years old.')
I am 25 years old.
کد فوق نیز بدون اشکال اجرا شده و فانکشن ()print
عدد مربوط به متغیر age
را به جای پارامتر ورودی قرار میدهد تا با سایر استرینگهای ورودی کانکت کرده و در خروجی نمایش دهد.