کدکست

جایی برای کد

حالت شب:


آموزش برنامه نویسی به زبان پایتون

پایتون

پایتون یک زبان برنامه‌نویسی سطح‌بالا، همه‌منظوره و تفسیر‌شده است که کاربردهای گسترده‌ای در دنیای کامپیوترها دارد. این راهنما تلاش می کند پایتون را بصورت مختصر به کاربران فارسی زبان آموزش دهد. استفاده از این نوشته بدون داشتن پیش‌نیازی اندک از برنامه‌نویسی، ممکن است دشوار به نظر برسد و داشتن پیش نیازهایی در زبان‌های برنامه‌نویسی دیگر، شما را در درک بهتر این نوشتار، یاری می‌کند.

درباره پایتون

پایتون یک زبان برنامه نویسی تفسیری است که در سال ۱۹۹۱ برای اولین بار توسط گویدو ون روسوم منتشر شد. این زبان در حال حاضر توسط شرکت های بزرگ فناوری دنیا بصورت گسترده مورد استفاده قرار می گیرد.

ویژگی‌های پایتون

پایتون زبانی بسیار ساده برای یادگیری برنامه نویسی است و معمولا یکی از پیشنهادات برای برنامه نویسان تازه کار، شروع کار خود با پایتون است. سادگی و امکانات گسترده‌ی این زبان، آن را به گزینه‌ای مطلوب برای انتخاب شدن به عنوان زبان برنامه‌نویسی بسیاری از برنامه‌های کامپیوتری تبدیل کرده است.

حوزه‌های کاری پایتون

پایتون در حوزه‌های مختلفی کاربرد دارد، از توسعه وب و ساخت برنامه‌های خط فرمان تا یادگیری ماشین و محاسبات و اتوماتیک کردن امور مختلف در سرورها و هرجایی که عملیات های تکراری و حتی هوشمند نیاز به انجام شدن دارند، شبکه‌های کامپیوتری و البته استفاده‌ی گسترده در صنعت توسعه بازی‌های کامپیوتری و زبان اسکریپت‌های نرم‌افزارهای طراحی بخش دیگری از کاربردهای این زبان برنامه‌نویسی است.

نصب پایتون

برای استفاده از پایتون باید مفسر آن را روی سیستم خود نصب کنید. این راهنما مربوط به نسخه‌ی 3.x پایتون است. نسخه‌های 2 پایتون به زودی از پشتیبانی فنی و توسعه‌ی تیم پایتون خارج می‌شود. برای نصب پایتون۳، در ادامه از بخش مربوط به سیستم عامل خود، راهنمای نصب را بخوانید.

نصب پایتون روی لینوکس

برای نصب پایتون روی توزیع‌های مختلف لینوکس، راهکارهای مختلفی وجود دارد. در بسیاری از توزیع های لینوکس پایتون نصب است و در این میان بعضی پایتون ۲ و بعضی دیگر پایتون ۳ را بصورت پیش فرض همراه سیستم عامل نصب می‌کنند.

برای نصب پایتون روی اوبونتو ۱۶.۰۴ و بالاتر از طریق مخازن اوبونتو، دستور زیر را در خط فرمان اجرا کنید :

sudo apt-get update
sudo apt-get install python3.6

برای نصب پایتون۳ روی فدورا، هم میتوانید با dnf آن را نصب کنید :

sudo dnf install python3

نصب روی مک

برای نصب پایتون۳ روی مک، به سادگی می‌توانید از مدیربسته‌ی Homebrew استفاده کنید. کافیست هوم‌برو را روی سیستم خود داشته باشید و با دستور زیر پایتون۳ را روی سیستم عامل خود نصب کنید :

brew install python3

نصب روی ویندوز

برای نصب پایتون۳ روی ویندوز، به سایت python.org بروید و از بخش دانلود، آخرین نسخه از پایتون را دریافت کنید و روی ویندوز نصب کنید.

اجرای برنامه‌های پایتون

ساده ترین راه اجرای پایتون استفاده از repl پایتون است. کافیست یک ترمینال روی سیستم عامل خود باز کنید و دستور python3 را روی آن اجرا کنید. اگر پایتون را به درستی نصب کرده باشید، با اجرای این دستور، محیط تعاملی پایتون برای شما اجرا خواهد شد. کدهای پایتون خود را خط به خط میتوانید در این محیط بنویسید و اجرا کنید و نتایج آن را ببینید.

البته این راه حل بیشتر مناسب تست کردن های ساده یا اجرای دستورات یکبار مصرف است. حالت پر کاربردتر، نوشتن کدهای پایتون در فایلهایی با پسوند .py است. برای مثال چند خط از دستورات را می‌توانید در یک فایل ( مثلا : hello.py ) بنویسید و با دستور python3 از طریق ترمینال آن را اجرا کنید:

python3 hello.py

ویرایشگرها و محیط های توسعه

تقریبا تمام کد ادیتورهای معروف دنیا از پایتون به خوبی پشتیبانی می کنند. شما به سادگی میتوانید در ویرایشگرهای اتم، ویژوال استودیو کد، سابلایم تکست، Vim و بقیه کدهای پایتون خود را بنویسید.

در بین IDE ها هم در لحظه‌ی نگارش این نوشته، PyCharm محصول شرکت JetBrains کاربردی ترین و مشهورترین محیط مجتمع توسعه برای پایتون است. این نرم افزار در دو نسخه‌ی کامیونیتی و تجاری عرضه می‌شود که استفاده از نسخه‌ی کامیونیتی کاملا رایگان است.

سلام دنیا

بعد از انتشار کتاب آموزش برنامه نویسی سی توسط دنیس ریچی و برایان کرنیگان، متداول است که آموزش هر زبان برنامه نویسی با چاپ عبارت Hello, World! روی خروجی استاندارد آغاز میشود.

برای چاپ عبارت Hello, World! در پایتون، تکه کد زیر را یا در محیط تعاملی پایتون اجرا کنید و یا در یک فایل با پسوند .py‍ ذخیره و اجرا کنید:

print('Hello, World!')

ساختار کدها در پایتون

برخلاف بیشتر زبان‌های برنامه‌نویسی، تو رفتگی کدها بخشی از ساختار زبان برنامه نویسی پایتون هستند و به عوض آن استفاده از براکت ها برای مشخص کردن بلاک کدها در پایتون متداول نیست. در پایتون نیازی به استفاده از سمی کولن ; برای نشان دادن پایان دستورات نیست.

تو رفتگی کدها در پایتون جزیی از ساختارند و

یک نمونه کد در پایتون

class Codecast:
	def Episode():
		print('This is python3 episode')

متغیرها در پایتون

متغیرها فضاهایی از حافظه هستند که مقداری در آن ذخیره میشود و یک نام برای آن فضا از حافظه قرار داده می‌شود. این داده ها انواع مختلفی میتوانند داشته باشند.

در پایتون برای تعریف متغیر ها نیاز به مشخص کردن نوع داده در هنگام تعریف متغیر نداریم و تنها زمانی یک متغیر خانه هایی از حافظه را اشغال میکند که مقداری به آن اختصاص دهیم.

برای تعریف متغیرها در پایتون کافیست نام متغیر ، یک علامت = و مقداری که در متغیر قرار است ذخیره کنید را بنویسید. مانند نمونه های زیر :


name = 'Dariush'
id = 1

همچنین میتوانید چند متغیر را به صورت همزمان مقدار دهی کنید با ساختار زیر :

a, b, c = 1, 10 , 100

print(a, b, c)

در تعریف بالا a برابر با 1، b برابر 10 و c برابر 100 می‌شود .

همچنین میتوان چند متغیر را بصورت زنجیره‌ای مقداردهی کرد.

d = e = 2000

که هر دو متغیر d و e برابر 2000 می‌شوند. می‌توانید به هر تعداد که نیاز دارید بصورت زنجیره‌ای، متغیر مقداردهی کنید.

نامگذاری متغیرها

نام متغیرها در پایتون، میتواند شامل تمام حروف کوچک و بزرگ انگلیسی، اعداد انگلیسی و کاراکتر _ باشد، و البته اولین کاراکتر در نام متغیر نمی‌تواند یک عدد باشد.

کلمات رزرو شده در پایتون ۳

پایتون همانند زبان‌های برنامه‌نویسی دیگر از کلماتی برای تعریف ساختارهای زبان خود استفاده می‌کند که از این کلمات نمی‌توانید به عنوان نام متغیر هایتان استفاده کنید. لیست کلمات کلیدی پایتون:

False      class      finally    is         return
None       continue   for        lambda     try
True       def        from       nonlocal   while
and        del        global     not        with
as         elif       if         or         yield
assert     else       import     pass
break      except     in         raise

انواع داده در پایتون

مقادیر ذخیره شده در پایتون میتواند از نوع داده‌های مختلفی باشد. برخلاف نسخه‌ی قدیمی‌تر پایتون، در پایتون۳ تمام انواع داده ها، حتی انواع اصلی، یک کلاس هستند.

برای دانستن نوع متغیرها در پایتون از تابع type میتوانید استفاده کنید :

type(2000)

که خروجی این دستور، <class 'int'> است که نشان می‌دهد این مقدار یک int است. در ادامه انواع داده در پایتون را توضیح می‌دهیم.

انواع عددی

اعداد صحیح یا Integer یک نوع داده‌ی بنیادی در پایتون است که شامل اعداد صحیح مثبت منفی می‌شود. اعدادی که قسمت اعشاری ندارند. چند نمونه تعریف متغیر با مقدار صحیح :

i = 12345
j = 0
k = -5423432

اعداد اعشاری ( Float )، نوعی دیگر از انواع داده های بنیادی زبان پایتون هستند که میتوانند اعداد را بصورت اعشاری تعریف کنند. چند نمونه تعریف متغیر از نوع عدد اعشاری :

x = 1.2
y = -4323.22222202
z = x + y

پایتون از یک نوع داده ی بنیادی عددی دیگر نیز پشتیبانی میکند تحت عنوان نوع داده عدد مختلط ( Complex Number ). این نوع داده برای کسانی که با ریاضیات آشنایی نسبی دارند آشناست. اعداد مختلط شامل دو قسمت هستند. قسمت واقعی ( Real ) و قسمت موهومی ( imaginary ).

فرمت نوشتار این اعداد بصورت x + yj‍ است. به مثال زیر نگاه کنید :

n = 2+3j

در مثال بالا، 2 قسمت واقعی و 3 قسمت موهومی این عدد مختلط است. این نوع داده بصورت عام کاربرد ندارد و نیازی نیست نگران آن باشید.

رشته ( String )

رشته ها در پایتون، دنباله ای از کاراکترها هستند که میتوانند در یک متغیر ذخیره شوند. مثلا شما اگر بخواهید نام خود را در متغیری به نام name ذخیره کنید، آن مقدار را در قالب یک رشته کاراکتر ذخیره کرده اید. رشته ها را بین دو علامت کوتیشن ' یا دو علامت دابل کوتیشن " می‌نویسند. در پایتون تفاوتی بین ' و " برای تعریف استرینگ‌ها وجود ندارد. در برخی زبان‌ها برخی از عملیات های فرمت متن و اینترپولیشن برای کوتیشن و دابل کوتیشن متفاوت است اما در پایتون این عملیات‌ها برای هر دو نوع ( یعنی دو ' یا دو ") تفاوتی وجود ندارد.

چند نمونه تعریف متغیر از نوع رشته :

name = "Dariush"
lastname = 'Abbasi'

برای تعریف رشته های متنی که در چند خط ذخیره می‌شوند، از سه کوتیشن یا دابل کوتیشن در اطراف رشته استفاده می‌کنیم. مانند مثال زیر :

poem = '''
O Captain! my Captain! our fearful trip is done,
The ship has weather’d every rack, the prize we sought is won,
The port is near, the bells I hear, the people all exulting,
While follow eyes the steady keel, the vessel grim and daring;
                         But O heart! heart! heart!
                            O the bleeding drops of red,
                               Where on the deck my Captain lies,
                                  Fallen cold and dead.
'''


در رشته‌ها میتوان به تک تک عناصر رشته بصورت مجزا دسترسی پیدا کرد. برای اینکار کافیست در مقابل نام متغیر [ و ] قرار دهیم و بین این دو، شماره کاراکتری که میخواهیم به آن دسترسی داشته باشیم را بنویسیم که به این شماره ایندکس می‌گویند. ایندکس در پایتون همانند بسیاری از زبان‌های برنامه‌نویسی دیگر از صفر شروع می‌شود و برای هر کاراکتر یک واحد به آن اضافه میشود. مثلا در کلمه‌ی hello، ایندکس e عدد ۱ است و ایندکس o عدد ۴ است. مثال زیر را ببینید :

x = "hello"
print(x[0]) # h

همچنین امکان دسترسی به رنجی از کاراکترهای یک رشته در پایتون با ساختاری ساده فرآهم است. در رشته‌ی hello با [0:2] رشته‌ی he را می‌توان گرفت. بصورت زیر :

y = "hello"
print(y[0:2]) # he

همچنین میتوان در یک رنج، کاراکترهایی با فاصله مشخص از هم را گرفت. مثلا در رشته‌ی hello با [0:5:2] رشته‌ی hlo بر میگردد. یعنی کاراکترهای 0، 2 و 4 که هرکدام دوکاراکتر بعدی از کاراکتر قبلی هستند که این را آخرین گزینه مشخص می‌کند. بصورت زیر :

z = "hello"
print(z[0:5:2]) # hlo

در استفاده از ایندکس‌ها می‌توان از اعداد منفی هم استفاده کرد. عدد -1 آخرین کاراکتر، -2 کاراکتر یکی مانده به آخر و همین روند از آخر به اول. در مثال زیر خروجی برنامه، چاپ کاراکتر o در خروجی است :

str = 'hello'
print(str[-1])

برای چسباندن دو رشته به هم از + استفاده می‌کنیم. در مثال زیر str1 و str2 به هم چسبیده شده و در str3 ذخیره می‌شود :

str1 = 'Hello '
str2 = "World"
str3 = str1 + str2
print(str3)

با تابع len میتوانیم طول رشته را بدست بیاوریم. مانند مثال زیر :

str = 'hello'
print( len(str) ) # 5

میتوانیم در درون رشته‌ها، متغیر ها را فراخوانی کنیم. برای اینکار قبل از " یا ' در تعریف رشته باید یک کاراکتر f قرار دهیم و در بدنه‌ی آن رشته می‌توانیم متغیرها را قرار دهیم. کافیست در بدنه‌ی رشته متغیر را بین براکت باز } و بسته { قرار دهیم. مثال زیر متغیر های str1 و str2 را در بدنه‌ی رشته فراخوانی و چاپ می‌کند :

str1 = 'Hello'
str2 = 'World'
str3 = f"{str1}, my dear {str2}!"
print(str3) # Hello, my dear World!

بولین ( Boolean )

نوع داده‌ی بولین، یک نوع داده بسیار ساده است که دو مقدار ‍True یا False را میتوان در آن ذخیره کرد. همانند باینری که مقدار 0 یا 1 یا بررسی‌های دنیای واقعی از درست یا غلط بودن یک موضوع، در این نوع داده هم مقدار درست True یا غلط False را می‌توان ذخیره کرد.

چند نمونه تعریف متغیر از نوع بولین:

q = True
r = False

لیست

لیست ها در پایتون همانند آرایه ها در زبان های دیگر است. یک لیست شامل دسته ای از داده های مرتب از انواع مختلف است که همگی در یک متغیر ذخیره می‌شوند. آیتم های لیست بین ] و [ قرار میگیرند و با , از هم جدا می‌شوند.

مثالهایی از لیست در پایتون :

ing = ['Onions', 'Carrot', 'Pepper']
items = [12, True, 'Hello']

print(ing)
print(items[0])

توپل

توپل ها در پایتون، همانند لیست ها هستند با این تفاوت که مقادیر آن تغییر ناپذیر است. آیتم های توپل بین ) و ( قرار میگیرند و با , از هم جدا می‌شوند.

مثالهایی از توپل در پایتون :

ing = ('Onions', 'Carrot', 'Pepper')
items = (12, True, 'Hello')

print(ing[2])
print(items)

دیکشنری

دیکشنری ها در پایتون، شبیه لیست ها هستند، با این تفاوت که کلید های دسترسی به آن، بجای یک عدد صحیح، یک رشته‌ی دلخواه است.

مثالهایی از دیکشنری در پایتون :

player = {'name': 'Mo', 'family': 'Salah', 'birthyear': 1992 }
team = {'name': 'Liverpool FC', 'motto': "You'll Never Walk Alone", 'stadium': 'Anfield'}

print(player['name'])
print(team['motto'])

ساختارهای شرطی در پایتون

برای بررسی برقرار بودن شرط‌ها در پایتون، از ساختارهای شرطی استفاده می‌کنیم.

ساختار if

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

x = True

if x :
	print("x is true")

این مثال یک نمونه ساده از استفاده از ساختار if در پایتون است. در پایتون، نوع داده‌ی بولین یکی از معیارهای بررسی درستی و نادرستی است. در مثال بالا اگر x برابر True باشد، کد print("x is true") اجرا می‌شود.

ساختار if‍ دو حالت دیگر دارد، elif که یک مقدار میگیرد و در صورت برقرار نبودن شرط قبلی، بررسی و در صورت درستی مقدار اجرا می‌شود و else که در صورت برقرار نبودن تمامی شروط اجرا می‌شود. هر دستور شرطی میتواند به هرتعداد که نیاز دارید elif مختلف داشته باشد. مثال زیر را ببینید:

x = False
y = False

if x:
	print("x is true")
elif y:
	print("y is true")
else:
	print("x and y are fasle")

در این مثال اگر x مقدار True داشته باشد دستورات بلاک if اجرا می‌شود، اگر y مقدار True داشته باشد دستورات بلاک elif اجرا می‌شود و اگر هردو False باشند دستورات بلاک else اجرا می‌شوند.

عملگرهای مقایسه در شرط‌ها

کاربرد گسترده‌ی دستور if مقایسه‌ی برابری دو رشته یا دو عدد است. اینکه عدد ذخیره شده در یک متغیر کمتر، بیشتر یا مساوی مقدار متغیر دیگریست یا اینکه کاراکترهای ذخیره شده در دو متغیر با هم برابرند، عملیات‌های رایجی در مقایسه است.

در پایتون برای مقایسه‌ی برابری دو مقدار از ==، برای بررسی نابرابری دو مقدار از != استفاده میکنند. همچنین، از >، >=، < و <= به ترتیب برای عملیات های بزرگتر، بزرگتر یا مساوی، کوچکتر و کوچکتر یا مساوی استفاده می‌کنند. مثال هایی از این عملگرها :

n = 12
m = 12
o = 13

if n == m:
	print("n and m are equal")

if n < o :
	print("n is less than o")
 

همچنین دو دستور and و or نیز برای مقایسه‌ها استفاده می‌شوند که and در صورتی درست میباشد که دو طرف آن درست باشند ولی or در صورتی درست است که حداقل یک طرف از دوطرف آن درست باشند.

n = 12
m = 12
o = 13

if n == m and n < o:
	print("and is ok")

if n == m or n < o:
	print("or is ok")

ساختار if یک خطی

پایتون از یک نوع ساختار if خطی برای بررسی شرط‌های ساده در یک خط پشتیبانی می‌کند. این ساختار بصورت زیر است :

"true" if condition else "false"

در ساختار بالا بجای “true” مقداری که در صورت درست بودن شرط اجرا می‌شود را قرار می‌دهیم، بجای condition شرط مورد بررسی را و بجای “false” دستوراتی که در صورت درست نبودن شرط اجرا می‌شوند. به مثال زیر دقت کنید :

x = 8
name = "Dariush" if x < 10 else "Amin"
print(name)

در نمونه کد بالا اگر مقدار متغیر x کمتر از 10 باشد، متغیر name برابر “Dariush” می‌شود و در غیر اینصورت برابر “Amin” می‌شود.

عملگرها در پایتون

عملگرهای محاسباتی در پایتون

از آنجایی که پایتون توسط یک ریاضی‌دان و در ابتدا عمدتا برای حل مسائل ریاضی ایجاد شد، عملگرهای محاسباتی کاملی را پشتیبانی می‌کند.

عملگر توضیح
+ جمع
- تفریق
* ضرب
/ تقسیم
// تقسیم صحیح
% باقیمانده‌ی تقسیم
** توان
+ علامت مثبت
- علامت منفی

مثالهایی از عملگرهای محاسباتی در پایتون :

x = 20
y = 10

z = x + y
print("x + y = {}".format(z))

z = x - y
print("x - y = {}".format(z))

z = x * y
print("x * y = {}".format(z))

z = x / y
print("x / y = {}".format(z))

z = x // y
print("x // y = {}".format(z))

z = x % y
print("x % y = {}".format(z))

z = x ** 2
print("x ** 2 = {}".format(z))

z = +y
print("+y = {}".format(z))

z = - x
print("-x = {}".format(z))

عملگرهای مقایسه‌ای

این موارد در قسمت شرط ها توضیح داده شدند. لیست عملگرهای مقایسه ای در پایتون :

| عملگر | توضیح | |:—–:|:—————:| | < | کوچکتر | | <= | کوچکتر یا مساوی | | > | بزرگتر | | >= | بزرگتر یا مساوی | | == | برابر | | != | نا برابر |

عبارت pass

عبارت pass کاری نمی‌کند، صرفا جهت استفاده در جاهاییست که نیاز به یک عبارت اجرا شونده‌ی اجباری دارند. برای مثال برای تعریف یک if بدون بدنه، بجای بدنه‌ی اجرایی از pass استفاده می‌کنیم.

حلقه ها در پایتون

برای انجام عملیات‌های تکراری در برنامه‌های کامپیوتری روی لیستی از ورودی‌ها، استفاده از حلقه‌های تکرار یک راه متداول است.

دو حالت پرکاربرد در پایتون برای انجام عملیات‌های تکرار، حلقه‌ی for و while است که در ادامه آنها را توضیح می‌دهیم.

حلقه‌ی for

حلقه‌ی for شاید مشهورترین اصطلاح برای تعریف حلقه در زبان‌های برنامه‌نویسی باشد. فرض کنید که یک لیست از اسامی داریم. برنامه‌ی پایین به تک تک اسامی لیست سلام می‌کند :

names = ['Dariush', 'Amin', 'Saeid']

for i in names :
	print("Hello, {}".format(i))

در برنامه‌ی بالا، عبارت for‍ تعریف حلقه را آغاز میکند، سپس متغیر موقتی i ( که هر نام دیگر میتوانید بجای آن استفاده کنید) و کلمه‌ی in که بخشی از ساختار این حلقه است و درنهایت نام لیست. در بدنه‌ی این حلقه، مقدار i حاوی مقداری گرفته شده از لیست است و در هر بار اجرا مقدار بعدی را میگیرد تا حلقه پایان یابد.

همچنین میتوانیم روی یک رنج از اعداد با عبارت range حلقه‌ی for را اجرا کنیم.

حلقه‌ی while

حلقه‌ی while یک حلقه‌ی ساده است که یک شرط را در هربار اجرا امتحان میکند و مادامیکه شرط درست باشد اجرا میشود. به مثال زیر نگاه کنید :

i = 1
while i < 10:
	print(i)
	i += 1

این حلقه اعداد ۱ تا ۹ را روی صفحه چاپ می‌کند. هربار که این حلقه اجرا می‌شود، عبارت آخر بلاک یک واحد به i اضافه میکند و در نهایت مقدار i برابر 10 می‌شود و شرط برقرار نمیشود و حلقه پایان می‌پذیرد.

عملیات‌های حلقه

عبارت break :

در حلقه‌های for و while، برای خروج کامل از حلقه بدون اینکه شرط حلقه منقضی شود، از عبارت break استفاده می‌کنیم.

عبارت continue :

عبارت continue ادامه‌ی دستورات بلاک را اجرا نمیکند و به مرحله‌ی بعدی حلقه می رود.

عملیات else‍ :

اگر یک حلقه پایان یابد و درست نباشد، یکبار دستورات بلاک else در صورت تعریف، اجرا می‌شوند.

گرفتن ورودی از کاربر

با استفاده از تابع input() می‌توانید از کاربران ورودی استاندارد را بگیرید. این تابع یک پارامتر میگیرد که حاوی متنی است که قبل از گرفتن ورودی به کاربر نشان می‌دهید، یک جمله راجع به چیزی که از کاربر می‌گیرید. به مثال زیر دقت کنید :

x = input("Enter your name:")
print(x)

برنامه بالا ابتدا پیغام Enter your name: را به کاربر نشان می‌دهد و منتظر ورودی می‌ماند. پس از وارد کردن ورودی و زدن کلید اینتر، مقدار وارد شده در متغیر x ذخیره شده و در خط بعدی روی صفحه نمایش چاپ می‌شود.

ورودی‌هایی که از کاربر می‌گیرید بصورت string است و بنا به کاربرد خود می‌توانید به نوع داده‌ی مورد نظر خود آن را تبدیل کنید. برای تبدیل رشته به عدد صحیح از تابع int() و عدد اعشاری از تابع float() استفاده می‌کنیم :

y = input("Enter your age:")
yi = int(y)
print(yi)

توابع در پایتون

توابع یا فانکشن‌ها در پایتون، تکه کدهایی هستند که در قسمت‌های مختلف کد ممکن است بصورت مکرر مورد استفاده قرار گیرند. این دسته دستورات را بصورت یک بسته به نام تابع میتوان بسته‌بندی کرد که بعدها صرفا با صدا کردن نام آن تابع، بدون نوشتن دوباره‌ی آن‌ها، دستورات را اجرا کرد. مزیت استفاده از توابع، جلوگیری از تکرار کدهاست و البته تغییر دسته‌ای کدها را آسان می‌کند، زیرا صرفا با تغییر بدنه‌ی تابع، تمام فراخوانی های تابع، کد تغییر کرده را اجرا می‌کند.

برای تعریف توابع از ساختار زیر استفاده می‌کنیم :

def funcname():
	pass

در این ساختار عبارت def نشاندهنده‌ی آغاز تعریف تابع است، بجای funcname هم نام مورد نظر خود برای تابع را قرار می‌دهید و بجای pass، دستوراتی که قرار است توسط آن تابع اجرا شوند را مینویسیم. مثلا تابع زیر عبارت Hello, World! را در صفحه نمایش چاپ می‌کند :

def Hello():
	print("Hello, World")

برای استفاده از این تابع در هرجایی از کد، کافیست آن را بصورت Hello() فراخوانی کنید.

پارامتر‌های تابع

هرتابع میتواند چند پارامتر ورودی بپذیرد و آن مقادیر را در بدنه‌ی تابع استفاده کند. این پارامترها ( یا آرگومان‌ها) بصورت نام‌هایی بین () در قسمت تعریف تابع، مشخص می‌شوند. هر تابع اگر بیشتر از یک پارامتر داشته باشد، پارامترهای آن را با , از هم جدا می‌کنیم. مثال زیر دو آرگومان firstname و lastname را از کاربر دریافت کرده و به کاربر روی صفحه نمایش نشان می‌دهد :

def userinfo(firstname, lastname):
	print("Your firstname is : {}".format(firstname))
	print("Your lastname is : {}".format(lastname))

userinfo("Dariush", "Abbasi")

برگرداندن مقادیر در تابع

توابع میتوانند با کلمه کلیدی return مقادیری را برگردانند. به مثال زیر توجه کنید :

def exponent(m, n):
	e = m ** n
	return e

data = exponent(20,3)
print(data)

در مثال بالا، تابع exponent را تعریف کردیم که دو عدد به عنوان ورودی دریافت کرده، عدد اول را به توان عدد دوم میرساند و نتیجه را به کاربر برمیگرداند. در هنگام فراخوانی تابع هم، نتیجه ی بازگشت شده در متغیر data ذخیره می‌شود.

هر تابع می‌تواند بیشتر از یک مقدار برگرداند. به مثال زیر دقت کنید :

def swap(a,b):
	return b, a

a, b = "Dariush", "Amin"
a, b = swap(a, b)
print("a = {} , b = {}".format(a, b))

این تابع دو پارامتر دریافت می‌کند و به ترتیب پارامتر دوم و اول را برمی‌گرداند. در برنامه‌ی بالا در نهایت مقدار a برابر amin و مقدار b برابر Dariush می‌شود. یعنی مقدار دو متغیر با هم جابجا می‌شود.

مقادیر پیش‌فرض برای پارامترها

پایتون این امکان را فرآهم کرده که برای توابع، پارامترهای اختیاری تعریف کنید. به این صورت که یک مقدار اولیه برای پارامتر تعریف می‌کنید و آن پارامتر در صورت مشخص نشدن، از مقدار اولیه استفاده می‌کند. مثال زیر را ببینید :

def Hello(name="World!"):
    print("Hello, {}!".format(name))
Hello()
Hello("Dariush")

اگر پارامتر name به این تابع فرستاده شود، از مقدار فرستاده شده استفاده می‌شود و در غیر اینصورت یعنی اگر مقداری برای پارامتر اول فرستاده نشود، مقدار پیش فرض ( در این مثال World ) به عنوان مقدار پارامتر name در نظر گرفته می‌شود.

اگر تابعی یک یا چند پارامتر با مقدار پیش فرض و یک یا چند پارامتر اجباری یعنی بدون مقدار پیش فرض داشته باشد، برای رعایت ترتیب باید پارامترهای با مقدار پیش‌فرض را در انتهای لیست پارامترها در تابع بیاوریم تا پایتون متوجه شود که قصد ما ارسال نکردن کدام پارامتر است.

def Hello(greet, name="World!"):
    print("{}, {}!".format(greet, name))
Hello("Hello")
Hello("Hi", "Dariush")

در مثال بالا اگر پارامتر name را در ابتدا می‌آوردیم، در مثال اول پایتون متوجه نمی‌شد که ما قصد ارسال نکردن پارامتر دوم را داشتیم.

پارامترهای *args و **kwargs

دو نوع پارامتر خاص در توابع پایتون قابل تعریف است که امکان دریافت دسته‌ای پارامترها در قسمت فراخوانی تابع را فرآهم می‌کند.

پارامتر *args تعداد نامشخصی داده را در پارامترها دریافت کرده و به عنوان یک لیست در بدنه‌ی تابع قابل استفاده است :

def sum(*args):
    sum = 0
    for num in args:
        sum += num
    print(sum)

sum(20, 21)
sum(15, 10, 9)
sum(70, -3, 14, 200)

به تابع sum تعداد عدد که بفرستیم، آنها را با هم جمع کرده و نتیجه را در خروجی چاپ می‌کند.

پارامتر **kwargs تعداد نامشخصی پارامتر دارای نام را دریافت کرده و به عنوان یک دیکشنری در بدنه‌ی تابع قابل استفاده است :

def show_data(**kwargs):
    for key, value in kwargs.items():
        print("key: {} - value: {}".format(key, value))

show_data(name="Dariush", username="@dariubs", github="github.com/dariubs")

در مثال بالا به تابع show_data به هرتعداد که بخواهیم پارامتر دارای نام میتوانید بفرستیم و در قالب یک دیکشنری آن را دریافت کنیم.

استفاده از تابع main()

در بسیاری از زبان‌های برنامه‌نویسی یک تابع main تعریف می‌شود که کدهای خروج از برنامه و نقطه‌ی شروع برنامه را مدیریت کند. این مورد در پایتون اجباری نیست اما متداول است که بجای اجرای عادی کدها در پایتون، از ساختار فراخوانی تابع ‍‍main برای اجرای اسکریپت‌ها و کدهای پایتون استفاده کنید:

def main():
    print("Hello World!")

if __name__ == "__main__":
    main()

– نیاز به توضیح __name__ و __main__

توضیحات در پایتون

برای شفافیت بیشتر در درک کد برنامه ها، در زبان های برنامه نویسی مختلف روش‌هایی برای نوشتن توضیحات در کدها تعبیه شده است. در پایتون هم نوشتن این کامنت‌ها برای مقاصد مختلف، بسیار ساده است.

در پایتون در ابتدای خط یا در پایان هر دستور اگر علامت # را قرار دهیم، مفسر پایتون از آن به بعد تا انتهای آن خط را به عنوان کد اجرا شونده در نظر نمیگیرد.

نمونه هایی از توضیحات در پایتون :

# Hello world function
def HW():
    print("Hello, World!") # end of statement

در کد بالا، # Hello world function و # end of statement به عنوان توضیحات در نظر گرفته شده و تاثیری در اجرای کد ندارد.

شی گرایی در پایتون

برنامه‌نویسی شئ‌گرا یک پارادایم برنامه‌نویسی است که پایتون از نسخه‌ی ۳ خود به خوبی از آن پشتیبانی می‌کند، مدلی که در آن عملیات‌ها و مقادیر در قالب اشیاءی که از روی کلاس‌ها مدل سازی می‌شوند، ساخته می‌شود.

کلاس‌ها و اشیاء در پایتون

کلاس‌ها در برنامه‌نویسی شی‌گرا، نقشه هایی هستند که از روی آن نمونه ها ساخته می‌شوند. فرض کنید که در دنیای واقعی قصد تولید چند دوچرخه را داریم، کلاس‌ها همانند نقشه‌ی دوچرخه هستند و اشیاء، دوچرخه‌هایی هستند که از روی آن نقشه ساخته‌میشوند.

تعریف کلاس

تعریف یک کلاس در پایتون ساده است :

class Student:
	pass

با کلمه‌ی کلیدی class و نام کلاس که با یک حرف بزرگ انگلیسی باید آغاز شود و ترجیحا بصورت CamelCase باشد. در بدنه‌ی کلاس، متغیرها و متدها ( توابع درون کلاس) مختلفی می‌توان تعریف کرد. به کلاس بالا، یک متد به نام info اضافه کردیم :

class Student:
	def info(self):
		print("Hello, I am a student!")

برخلاف توابع، در متدهای کلاس همیشه یک پارامتر اول اجباری داریم که معمولا نام آن self است که اطلاعات آبجکت ساخته شده را در خود دارد. با متد info در این کلاس، عبارت "Hello, I am a student!" در خروجی چاپ می‌شود.

برای استفاده از یک کلاس، باید یک instance از آن بسازیم که به آن یک شئ یا Object می‌گوییم. در مثال زیر، یک شئ از کلاس ساخته شده‌ی قبلی ساخته و متد info را در آن صدا می‌کنیم. دقت کنید که در فراخوانی متدها نیازی به پاس دادنِ پارامتر self نداریم :

s = Student()
s.info()

هر متد، می‌تواند همانند توابع در پایتون، تعدادی پارامتر بپذیرد :

class Student:
	def info(self, name):
		print("Hello, I am {}!".format(name))

هر متد می‌تواند همانند توابع در پایتون، مقادیری را برگرداند :

class Student:
	def info(self, name):
		return "Hello, I am {}!".format(name)

متد سازنده در پایتون

در هنگام نمونه سازی یک کلاس در پایتون، میتوانیم مقادیری را در لحظه‌ی ساخته شدن در شئ مقدار دهی کنیم. برای اینکار از متد ویژه‌ی __init__ استفاده می‌کنیم که متد سازنده‌ی کلاس است. مثال پایین را ببینید :

class Animal:
    def __init__(self, name):
        self.name = name
    def hi(self):
        print("Hello", self.name)

a = Animal("Cow")
a.hi()

در مثال بالا، در هنگام ساخت کلاس، یک نام به آن ارسال کردیم. و آن را در self.name ذخیره کردیم. با پیشوند self میتوانید یک اتریبیوت در شئ ساخته شده را مقدار دهی کنیم یا یکی از متدهای شئ ساخته شده را فراخوانی کنیم. به متد __init__، هر تعداد که پارامتر نیاز داشته باشیم میتوانیم ارسال کنیم و از قواعد توابع در آن استفاده کنیم.

در حالت عادی، هر تعداد که نیاز داشته باشیم میتوانیم شئ از یک کلاس بسازیم و از آن‌ها استفاده کنیم.

وراثت

هر کلاس در پایتون می‌تواند از یک کلاس دیگر ارث بری کند. به این صورت که همه ویژگی های کلاس دیگر را در خودش داشته باشد. برای اینکار در هنگام تعریف کلاس جدید، کلاسی که قرار است از آن ارث ببرد را بین () در جلوی نام کلاس مینویسیم. مانند مثال زیر :

class Animal:
    def __init__(self, name):
        self.name = name
    def hi(self):
        print("Hello", self.name)

class Cow(Animal):
    def __init__(self):
        super().__init__("Cow")
        
c = Cow()
c.hi()

در این مثال، کلاس Cow از کلاس Animal ارثی بری کرده است. دستور super().__init__("Cow") هم سازنده‌ی کلاس پدر را صدا میزند و پارامترهای مورد نیاز آن را برایش ارسال می‌کند. کلاس Cow تمامی ویژگی‌های کلاس پدر خود یعنی کلاس Animal را دارد.

کتابخانه استاندارد

ماژول‌ها

مدیریت بسته‌ها با pip

مدیر بسته‌ی pip، یک ابزار خط فرمان و مدیربسته استاندارد برای مدیریت بسته ها در پایتون است و در نسخه‌های اخیر پایتون همراه با آن نصب می‌شود. pip برای پایتون، چیزی شبیه npm برای nodejs یا RubyGems برای زبان روبی است.

نصب pip

معمولا بصورت پیش‌فرض pip همراه پایتون ۳ نصب می‌شود. برای اینکه مطمئن شوید pip نصب دارید، دستور زیر را در ترمینال اجرا کنید :

pip --version

که خروجی آن باید نسخه‌ی pip ای که روی سیستم نصب شده است باشد. البته ممکن است نسخه‌ی pip شما برای پایتون ۲ باشد که در اینصورت باید از دستور pip3‍ بجای pip استفاده کنید.

نصب بسته‌های پایتون با pip

برای نصب بسته‌های پایتون که عمدتا از مخازن pypi نصب ‌میشوند، باید نام پکیج خود را در pypi.org پیدا کنید و سپس با دستور زیر آن را نصب کنید. مثلا برای نصب flask از دستور زیر استفاده می‌شود :

pip install flask

لیست بسته‌های نصب شده

با استفاده از دستور pip list میتوانید لیستی از تمام بسته‌های نصب شده در محیط توسعه خود را ببینید.

نمایش اطلاعات پکیج

برای مشاهده‌ی اطلاعات پکیج نصب شده میتوانید از دستور زیر استفاده کنید. اطلاعاتی از قبیل نسخه‌ی نصب شده و اطلاعات توسعه دهندگان.

pip show flask

در مثال بالا بجای flask باید نام بسته‌ی مورد نظر خود را بنویسید و اجرا کنید.

سایر دستورات

با دستور pip help میتوانید لیستی از تمام دستورات pip را همراه توضیحات ببنید.

یونیت تست

دیباگ


از: داریوش عباسی
تگها : پایتون python