در این پست قصد دارم تا مفاهیم مهم پایتون را در یک پست توضیح دهم. البته نباید انتظار داشت که بعد از مطالعه این پست متخصص پایتون شد، اما پایتون انقدر ساده است که می توان مفاهیم مهم و کلیدی آن را در یک پست توضیح داد. پایتون یک زبان برنامه نویسی قدرتمند، مدرن و شی گرا می باشد که با اهداف عمومی طراحی شده و دارای امکانات بسیار زیادی می باشد. در این پست نگاهی گذرا به مفاهیم کلیدی پایتون خواهیم داشت. پایتون دارای دو نسخه است. پایتون ۲ و پایتون ۳. مثالهای این پست با استفاده از سینتکس پایتون ۳ نوشته شده اند.
مفسر پایتون
تنها زبانی که کامپیوتر آن را متوجه می شود زبان ماشین است. یادگیری و کار کردن با زبان ماشین بسیار سخت است به خاطر همین زبانهای سطح بالا به وجود آمده اند(مانند پایتون). زبانهای سطح بالا توسط مترجم به زبان ماشین تبدیل می شوند. مترجم های به روشهای مختلفی پیاده سازی می شوند. مترجم پایتون به روش مفسری پیاده سازی شده است. یک مفسر برنامه ای است که کدهای زبان سطح بالا را خط به خط به زبان ماشین تبدیل می کند. مفسر رسمی زبان پایتون CPython نام دارد که اولین بار توسط Guido van Rossum نوشته شده و سپس توسط جامعه اوپن سورس توسعه داده شده و در حال نیز توسعه داده می شود.
تابع print
تابع print مقدار یا مقادیری را دریافت کرده و آن را در صفحه کنسول نمایش می دهد.
print(‘Hello, World!’)
# خروجی ---> Hello, World!
تعریف متغییر
پایتون یک زبان داینامیک هست به این معنی که نیازی نیست نوع متغییر را مشخص کنیم. فقط کافی است نام متغییر را نوشته و مقداری را به آن تخصیص دهیم.
num = 42
می توان در یک خط چندین متغییر تعریف کرد:
a, b, s = 0, 1, ‘hi’
می توان مقدار دو متغییر را در یک خط دستور با یکدیگر جابجا کرد:
a, b = b, a
برای تعریف رشته می توان از جفت کوتیشن و یا تک کوتیشن استفاده کرد:
name = "John Doe"
country = 'US'
می توان با استفاده از تابع print مقدار متغییرها را نمایش داد:
print(name, country, num)
# output
John Doe 42
ساختار شرط
در پایتون برای شرط گذاری از دستور if استفاده می شود.
if name == 'John Doe':
print('Hi, John!')
else:
print('Who are you?')
# خروجی
Hi, John!
بخش شرط نیازی به پرانتز ندارد، البته گذاشتن پرانتز اختیاری است و فقط اگر منجر به خوانایی کد می شود استفاده از پرانتز توصیه می شود. بدنه شرط یا هر بلاک در پایتون با استفاده از علامت کولن ‘:’ و خط فاصله مشخص می شود، گذاشتن یک فاصله بعد از علامت کولن بیانگیر این هست که دستور به بلاک بالایی خود تعلق دارد مثلا در کد بالا خط دوم متعلق به بلاک if و خط ۴ متعلق به بلاک else می باشد. توصیه می شود از ۴ برای جداسازی دستورات مربوط به بدنه یک بلاک استفاده شود.
کد بالا را در پایتون می توان در یک خط نوشت که به عبارت شرط یا Conditional Expression معروف است.
print('Hi, John!') if name == 'John Doe' else print('Who are you?')
حلقه ها
دو ساختار برای ایجاد حلقه در پایتون وجود دارد، ساختار while و for
برای استفاده از ساختار while یک عبارت شرطی در جلوی آن می نویسیم تا هنگامی که این شرط درست باشد بدنه while اجرا می شود.
x = 0
while x < 5:
print(‘x is’, x)
x += 1
print('while loop terminated')
# خروجی
x is 0
x is 1
x is 2
x is 3
x is 4
while loop terminated
حلقه for بعد از کالکشن ها توضیح داده شده.
کالکشن ها
کاکلشن ها مجموعه های هستند که می توانند بیش از یک مقدار داشته باشند. کالکشن های اصلی پایتون عبارتند از list, tuple, dict و set
یک لیست می تواند دارای هر نوع آبجکتی باشد یعنی هر نوع داده ای. یک لیست یک کالکشن مرتب است یعنی عناصر آن از صفر شماره گذاری شده اند که با این شماره می توانیم به آنها دسترسی داشته باشیم. برای تعریف لیست از علامت براکت'[ ]' استفاده می کنیم.
person = ['Kate Doe', 42, 1.9, 'M']
برای چاپ اولین عنصر از لیست person می توانیم به صورت زیر عمل کنیم.
print('First element in person list is',(person[0])
# خروجی
First element in person list is Kate Doe
برای به دست آوردن طول یک لیست می توانیم از تابع len استفاده کنیم
print(len(person)
# خروجی
4
کالکشن بعدی tuple است. توپل ها عین لیست ها هستند با این تفاوت که بعد از تعریف آن نمی توانیم مقداری به آن اضافه کنیم یا مقداری از آن حذف کنیم. این ویژگی توپل باعث می شود که مفسر پایتون حافظه را به صورت استاتیک تعریف کند که به طبع باعث بهبود مصرف حافظه می شود. توپل ها برای تعریف مقادیر ثابت مثل روزهای هفته مفید هستند. یک توپل مانند لیست می تواند دارای هر نوع داده ای باشد. برای تعریف توپل از پرانتز استفاده می شود.
days_of_week = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri','Sat', 'Sun')
print(days_of_week[2])
# خروجی
Wed
کالکشن بعدی dict یا دیکشتری هست. دیکشنری بر خلاف لیست و توپل یک کالکشن مرتب نیست و دارای شاخص نیست یعنی با عدد شماره گذاری نشده اند. یک دیکشنری با کلید و مقدار تعریف می شود. می تواند با کلید به مقدار یک دیکشنری دسترسی داشت
fav_tv_series = {
'title': 'True Detective',
'year': 2014,
'director': 'Vince Vaughn',
'imdb_rank': 9.0,
'your_rank': 10
}
print(‘Your rank to’, move[‘title’], ‘is’, move[‘your_rank’])
# خروجی
Your rank to True Detective is 10
set نوع داده است که مثل لیست بوده اما یک ست نمی تواند دارای مقدار تکراری باشد. تمام عملیات مربوط به یک مجموعه مانند اجتماع، اشتراک و ... بر روی یک set قابل اجرا است. یک set با استفاده از علامت کروشه ‘{}’ تعریف می شود.
numbers = {1, 2, 2, 3}
print(numbers)
print(numbers[0])
# خروجی
{1, 2, 3}
1
حلقه for برای روی کالکشن ها استفاده می شود. حلقه for را می توان بر روی تمام کالکشن ها اجرا کرد. فقط کافی است یک تکرار کننده (iterator) تعریف کنیم که در واقع یک متغییر است در مثال پایین item یک iterator است.
for item in person:
print(item)
# خروجی
Kate Doe
42
1.9
M
برای استفاده از حلقه for بر روی دیکشنری می توانیم از دو تکرار کننده استفاده کنیم که در هر بار چرخش حلقه for اولی به کلید دیکشنری و دومی به مقدار آن کلید اشاره می کند:
for key, value in fav_tv_series:
print(key.title(), ':', value)
# output
Title : True Detective
Year : 2014
Directors : Vince Vaughn
Imdb_Rank : 9.0
Your_Rank : 10
نکته: متد title که بر روی کلید فراخوانی کردیم باعث می شود محتوای keyها که رشته هستند اولین کارکتر آنها به حرف بزرگ تبدیل شود. مثلا title به Title تبدیل می شود.
تابع
با استفاده از توابع می توانیم برنامه را به قسمت های معناداری تقسیم بندی کنیم. بعد از تعریف یک تابع به هر تعداد که مایل بودیم می توانیم آن را فراخوانی کرده و اجرا کنیم و نیازی به کپی پیست کردن بخش های تکرای برنامه نداریم. برای تعریف تابع در پایتون از کلمه کلید def استفاده می کنیم سپس نام تابع را می نویسیم و بعد از پارامترهای که ممکن است تابع دریافت کند.
def add(x, y):
print(x, '+', y, '=', x + y)
add(2 + 3)
# output
2 + 3 = 5
اگر بخواهیم از مقداری که در داخل تابع محاسبه می شود در برنامه استفاده کنیم باید آن را برگشت دهیم. برای برگشت دادن یک مقدار توسط تابع از کلمه کلیدی return استفاده می کنیم.
def area(width, height):
return width * height
برای فراخوانی نام تابع را نوشته اگر تابع برای اجرا نیاز به آرگومان داشت آنها را داخل پرانتر وارد می کنیم
آرگومان: مقدار یا مقادیری که یک تابع هنگامی فراخوانی برای اجرا نیاز دارد.
result = 2 + area(5, 9)
print('The result is ', result)
بیشتر در SaeedGhollami.blog.ir