در این پست قصد دارم تا مفاهیم مهم پایتون را در یک پست توضیح دهم. البته نباید انتظار داشت که بعد از مطالعه این پست متخصص پایتون شد، اما پایتون به قدری ساده است که می توان مفاهیم مهم و کلیدی آن را در یک پست توضیح داد. پایتون یک زبان برنامه نویسی قدرتمند، مدرن و شی گرا می باشد که با اهداف عمومی طراحی شده و دارای امکانات بسیار زیادی می باشد. در این پست نگاهی گذرا به مفاهیم کلیدی پایتون خواهیم داشت. پایتون دارای دو نسخه است. پایتون ۲ و پایتون ۳. مثالهای این پست با استفاده از سینتکس پایتون ۳ نوشته شده اند.
خروحی هر تکه کد در زیر آن بعد از #output گذاشته شده است
تنها زبانی که کامپیوتر قادر به اجرادستورای ت آن است زبان ماشین است. یادگیری و کار کردن با زبان ماشین بسیار سخت است به خاطر همین زبانهای سطح بالا به وجود آمده اند(مانند پایتون). زبانهای سطح بالا توسط مترجم به زبان ماشین تبدیل می شوند. مترجم ها به روشهای مختلفی پیاده سازی می شوند. مترجم پایتون به روش مفسری پیاده سازی شده است. یک مفسر برنامه ای است که کدهای زبان سطح بالا را خط به خط به زبان ماشین تبدیل می کند. مفسر رسمی زبان پایتون CPython نام دارد که اولین بار توسط Guido van Rossum نوشته شده و سپس توسط جامعه اوپن سورس توسعه داده شده و در حال حاضر نیز توسعه داده می شود.
تابع print مقدار یا مقادیری را دریافت کرده و آن را در صفحه کنسول نمایش می دهد.
print(‘Hello, World!’) # ouput 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?’)
# ouput 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')
# outpput 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])
# output First element in person list is Kate Doe
برای به دست آوردن طول یک لیست می توانیم از تابع len استفاده کنیم
print(len(person)
# output 4
کالکشن بعدی tuple است. توپل ها عین لیست ها هستند با این تفاوت که بعد از تعریف آن نمی توانیم مقداری به آن اضافه کنیم یا مقداری از آن حذف کنیم. این ویژگی توپل باعث می شود که مفسر پایتون حافظه را به صورت استاتیک تعریف کند که به طبع باعث دسترسی سریع به عناصر می شود. توپل ها برای تعریف مقادیر ثابت مثل روزهای هفته مفید هستند. یک توپل مانند لیست می تواند دارای هر نوع داده ای باشد. برای تعریف توپل از پرانتز استفاده می شود.
days_of_week = (‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’,‘Sat’, ‘Sun’) print(days_of_week[2])
# outpput Wed
کالکشن بعدی dict یا دیکشتری هست. دیکشنری بر خلاف لیست و توپل یک کالکشن مرتب نیست و دارای شاخص نیست یعنی با عدد شماره گذاری نشده اند. یک دیکشنری با کلید و مقدار تعریف می شود. می تواند با کلید به مقدار یک دیکشنری دسترسی داشت.
بعد از پایتون 3.6 دیکشنری ها با ترتیبی که برنامه نویس تعریف کرده است مرتب و نمایش داده می شوند
fav_tv_series = { 'title': ‘True Detective’, 'director': 'Vince Vaughn', 'year': 2014, 'imdb_rank': 9.0, 'your_rank': 10 } print(‘Your rank to’, move[‘title’], ‘is’, move[‘your_rank’])
# ouput Your rank to True Detective is 10
set نوع داده است که مثل لیست بوده اما یک ست نمی تواند دارای مقدار تکراری باشد. تمام عملیات مربوط به یک مجموعه مانند اجتماع، اشتراک و ... بر روی یک set قابل اجرا است. یک set با استفاده از علامت کروشه ‘{}’ تعریف می شود.
numbers = {1, 2, 2, 3} print(numbers) print(numbers[0])
#output {1, 2, 3} 1
حلقه for برای روی کالکشن ها استفاده می شود. حلقه for را می توان بر روی تمام کالکشن ها اجرا کرد. فقط کافی است یک تکرار کننده (iterator) تعریف کنیم که در واقع یک متغییر است در مثال پایین item یک iterator است.
for item in person: print(item)
# output Kate Doe 42 1.9 M
برای استفاده از حلقه for بر روی دیکشنری می توانیم از دو تکرار کننده استفاده کنیم که در هر بار چرخش حلقه for اولی به کلید دیکشنری و دومی به مقدار آن کلید اشاره می کند:
for key, value in fav_tv_series.items(): 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)