انجام پروژه با پایتون
پایتون اواخر دهه ۱۹۸۰ (میلادی) در مؤسسه ملی تحقیقات ریاضی و رایانه (CWI) در کشور هلند توسعه داده شد. هدف خیدو از توسعهٔ پایتون ایجاد جانشینی برای زبان برنامهنویسی ایبیسی بود که قابلیت پردازش استثناها را داشته باشد. پیادهسازی پایتون در دسامبر ۱۹۸۹ آغاز شد. خیدو طراح اصلی پایتون است و نقش مداوم او در تصمیمگیری پیرامون اهداف پایتون، باعث شد که انجمن پایتون به او لقب دیکتاتور خیرخواه جاویدان را بدهد. فان روسوم تا ۱۲ ژوئیه ۲۰۱۸ مسئولیت رهبری پروژهٔ پایتون را به عهده داشت. در آن زمان او اعلام کرد که از مسئولیت خود به عنوان دیکتاتور خیرخواه جاویدان کنارهمیگیرد. در حال حاضر، او مسئولیت رهبری پروژهٔ پایتون را به یک انجمن راهبری پنج عضوی که خود نیز یکی از اعضای آن است دادهاست. در ژانویهٔ ۲۰۱۹ توسعه دهندگان فعال هستهٔ پایتون نیک کولان، برت کانون، بری وارساو، کارول ویلینگ،و خیدو فان رو سوم را به عنوان اعضای انجمن انتخاب کردند. از آن زمان خیدو فان روسوم از نامزدی برای انجمن ۲۰۲۰ صرف نظر کردهاست. پایتون ۲٫۰ در ۱۶ اکتبر ۲۰۰۰ با ویژگیهای مهم و جدید بسیاری منتشر شدکه شامل بازیافت حافظه با قابلیت شناسایی دورو پشتیبانی از یونیکد بود.
پایتون ۳٫۰ در ۳ دسامبر ۲۰۰۸ منتشر شد این نسخه بازنویسی عمدهای از نسخهٔ قبل بود که سازگاری عقبرو را شکسته بود. بسیاری از ویژگیهای عمدهٔ آن به پایتون ۲.۶.x و ۲.۷.x پیشانتقال داده شدند. نسخههای منتشر شده از پایتون ۳ ابزار ۲to3
را دارند که کار ترجمهٔ کد پایتون ۲ به پایتون ۳ را (حداقل تا حدودی) انجام میدهد. سال ۲۰۱۵ مقرر شد نسخههای پایتون ۲٫۷ تنها تا سال ۲۰۲۰ پشتیبانی شوند.خصوصیات فهرست برخی از تغییرات عمده پایتون ۳٫۰:
تغییر پرینت چون یک تابع غیرقابل انتقال است نه یک توضیح. این باعث میشود که تغییر یک ماژول برای استفاده از یک تابع پرینت متفاوت، آسان باشد و بنابراین ایجاد نحو منظمتر میشود. در پایتون ۲٫۶ این امکان با تایپ کردن
from – future – import print – function
فراهم شد.
شبیه سازی پروژه با پایتون
آموزش پایتون از صفر
پایتون یک زبان برنامهنویسی چند پارادایمی است به طوریکه هم شیء گرایی و برنامهنویسی ساختیافته را کاملاً پوشش میدهد و هم بسیاری از خصوصیات پایتون برنامهنویسی جنبه گرا و تابعی (مثل پشتیبانی از فرا برنامهنویسی را پوشش میدهد. پارادایمهای برنامهنویسی دیگر نیز به وسیلهٔ افزونهها پشتیبانی شدهاند. مثل برنامهنویسی منطقی. پایتون از تایپ پویا و ترکیبی از شمارش مرجع و یک حلقه کشف و بازیافت قسمتهای هدر رفته حافظه برای مدیریت حافظه، استفاده میکند. یک ویژگی مهم پایتون تحلیل نام پویا است که روشها و نام متغیرها را در طول اجرای برنامه به هم ملحق میکند.
طرح پایتون به پشتیبانی محدود برای برنامهنویسی تابعی به سُنَت زبان لیسپ، ارائه شد. به همین منظور پایتون دارای توابع filter
, map
, و reduce
و عبارتهای لیست، دیکشنری، مجموعه و جنراتور است. اگرچه، تشابههای عمدهای بین پایتون و زبان خانواده لیسپ وجود دارد. این کتابخانه دو ماژول دارد (ایترتولز و فانکتولز) که ابزارهای تابعی را با اقتباس از هسکل و استاندارد امال پیادهسازی میکند.
فلسفهٔ اصلی پایتون در سند ذن پایتون پیئیپی ۲۰ خلاصه شدهاست که شامل گزینههای زیر است:
به جای اینکه تمام عملکرد پایتون در هستهٔ آن متمرکز باشد طوری طراحی شدهاست که به خوبی از افزونهها پشتیبانی کند. این ویژگی پایتون که آن را محبوب کردهاست، راهی برای اضافه کردن ایپیآی به نرمافزارهای موجود بودهاست. ایدهٔ فان روسوم از زبانی با هستهٔ کوچک و کتابخانهٔ استاندارد بزرگ با مفسر افزونهپذیر، ریشه در سرخوردگی او از زبان ایبیسی دارد.
یکی از اهداف پایتون داشتن نحو سادهتر و منظمتر است؛ به همین دلیل برای روششناسی کد فقط یک انتخاب در مقابل توسعهدهنده قرار میدهد. روش پایتون در مقابل روش پرل (بیش از یک روش برای انجام آن وجود دارد) قرار دارد و فلسفهٔ طراحی آن چنین است «باید یک راه – و ترجیحاً فقط یک راه – آشکار برای انجام هر کاری وجود داشته باشد.». الکس مارتلی که نویسندهٔ کتابهای مربوط به پایتون است. مینویسد: «در فرهنگ پایتون «هوشمندانه» توصیف کردن چیزی ستایش بهشمار نمیرود.»
هدف دیگر طراحی زبان آسان کردن توسعهپذیری است. ماژولهایی که تازه ساخته شدهاند، بهسادگی در C و C++ نوشته میشوند. پایتون همچنین میتواند به عنوان زبان توسعه برای ماژولها و کاربردهای موجود که به برنامه واسط قابل برنامهریزی نیاز دارد، استفاده شود. توسعه دهندگان پایتون سعی کردند از بهینهسازی زود هنگام اجتناب کنند و وصلههای غیر حساس سیپایتون که باعث افزایش سرعت نهایی میشد را اضافه نکردند. هرگاه برای برنامهنویس پایتون سرعت اهمیت داشت، او میتواند توابع زمانبر را به ماژولهای افزونهای ببرد و آنها را به زبانهایی مثل سی بنویسد یا از پایپای استفاده کند که نوعی کامپایلر درجا است. از سایتون که اسکریپت پایتون را به سی ترجمه میکند نیز میتوان استفاده کرد. به کاربران و علاقهمندان پایتون مخصوصاً آنان که باتجربه و آگاه به حساب میآیند پایتونیستا گفته میشود. این زبان در مقایسه با زبانهای دیگر، دارای سرعت کمتری است. این زبان زبان سطح بالایی است و مانند زبانهای C، رابطه خوبی با سختافزار ندارد. کارهایی که نیاز به حافظه کوتاه مدت دارند را نمیتوان برای زبان پایتون مناسب دانست.
واژههای ابداعی
یک واژه ابداعی رایج در انجمن پایتون، واژهٔ پایتونیک است که محدوده معنایی وسیعی را در رابطه با سبک برنامهنویسی در بر میگیرد. کدی پایتونیک است که از اصطلاحات پایتون به خوبی استفاده کرده باشد به طوری که شیوایی در زبان را نشان دهد و مطابق فلسفهٔ مینیمالیستی و خوانایی بالا در پایتون باشد. در مقابل کد آنپایتونیک کدی است که فهم آن مشکل است یا مثل رونویسیای از زبان دیگری باشد.
نام گذاری
نام پایتون از گروه کمدین بریتانیایی مانتی پایتون که سازندهٔ پایتون، خیدو فان روسوم، به آن علاقهمند بود، گرفته شدهاست. اشاره به مانتی پایتان در فرهنگ پایتون و کدهای آن به وفور دیده میشود؛برای مثال در پایتون spam and eggs، به جای فوبار به عنوان متغیرهای فرانحوی به کار میرود. در مستندسازی رسمی پایتون نیز به روالهای مانتی پایتون اشاره میشود.
دستور زبان
نوشتار اصلی: قواعد زبان پایتون
خوانایی بالا از اهداف زبان پایتون است؛ بنابراین طرح بندی آن مرتب و بدون حشو و زوائد است و اغلب از کلمات کلیدی انگلیسی استفاده میکند، در حالی که زبانها دیگر از نقطهگذاری استفاده میکنند. پایتون نسبت به زبانهای ساخت یافته سنتی، مثل C و پاسکال استثناءهای نحوی و موارد خاص کمتری دارد.
نوشتار اصلی: قواعد_زبان_پایتون § دندانه_دار_نوشتن
پایتون برای جداکردن بلوک کد به جای استفاده کردن از آکولاد از تورفتگی فاصله خالی استفاده میکند. برای شروع بلوک کد یک پله تورفتگی را بیشتر میکنیم و برای اتمام آن یک پله بلوک کد را کمتر میکنیم. پس ساختار ظاهری برنامه نمایش دهندهٔ ساختار معنایی آن است. این ویژگیای که به نام قاعدهٔ آف-ساید نیز شناخته میشود و در بعضی از زبانها وجود دارد ولی در بیشتر زبانهای برنامهنویسی وجود تورفتگی معنای خاصی نمیدهد.
حکمها و روند کنترل
حکمهای پایتون شامل:
حکم نسبتدهی (توکن ‘=’ , علامت مساوی). که متفاوت با نسبتدهی در برنامهنویسی دستوری دیگر عمل میکند. این سازوکار اولیه، عملکرد بسیاری از ویژگیهای دیگر را آشکار میسازد.
حکم
if
که یک بلوک کد تا رسیدن بهelse
وelif
(کوتاه شده else-if) را اجرا میکند.حکم
for
که روی یک شیء از نوع تکرار شدنی تکرار میشود و هر عضو آن را برای استفاده توسط بلوک مربوط به متغیر محلی میدهد.حکم
while
تا زمانی که شرط برقرار باشد بلوک کد را اجرا میکند.حکم
try
برای استثناها از آن استفاده میشود که اجازه میدهد بلوک کد همراه با آن با استفاده ازexcept
یاfinally
به کار گرفته شود.حکم
raise
برای ایجاد استثناها از آن استفاده میشود.حکم
class
که یک بلوک کد را اجرا میکند و فضاهای محلی آن را به یک کلاس ملحق میکند، برای استفاده در برنامهنویسی شیء گرا.حکم
def
که تابع یا شگرد را تعریف میکند.حکم
with
که یک بلوک کد را به یک مدیر محتوا ضمیمه میکند. (به عنوان مثال، اندوختن یک قفل قبل از اجرای بلوک کد و آزاد کردن قفل بعد از اجرا)حکم
break
برای خروج از نزدیکترین حلقه استفاده میشود.حکم
continue
که برای پریدن از دور جاری و ادامه دادن از دور بعدی در نزدیکترین حلقه استفاده میشود.حکم
del
که برای پاک کردن متغیرها از آن استفاده میشود. بدین معنا که مرجع نام به مقدار پاک میشود و فراخوانی مقدار موجب خطا میشود. متغیر پاک شده میتواند دوباره بهطور معمول نسبتدهی شود.حکم
pass
که به عنوان NOP از آن استفاده میشود و از آن برای درست کردن بلوک کد خالی استفاده میشود.حکم
assert
که هنگام دیباگ کردن استفاده میشود. شرطی که باید اتفاق بیافتد را بررسی میکند.حکم
yield
که از آن در توابع مولد (جنراتور) به جایreturn
استفاده میشود.حکم
print
که در پایتون ۳ تبدیل به تابعprint()
شد.حکم
import
که برای وارد کردن ماژول استفاده میشود.حکم
return
که برای برگرداندن مقداری در تابع استفاده میشود.
هر حکمی برای خود قواعد معنایی خاصی دارد: به عنوان مثال، حکم def
، بر خلاف دیگر حکمها بلوک خود را فوراً اجرا نمیکند.
سی پایتون استمرار را پشتیبانی نمیکند و مطابق نظر خَودو فان روسوم هرگز نخواهد کرد. در ورژنهای قبلی مولد تکرار کند بود چون اطلاعات تنها در یک جهت از مولد عبور میکردند.
عبارتها
از پایتون ۳٫۵ عملگر میانوندی
@
اضافه شد. هدف از اضافه کردن آن استفاده به عنوان عملگر ضرب ماتریسی توسط کتابخانههایی مثل نامپای بودهاست.از پایتون ۳٫۸ نحو:=
، که با نام عملگر والروس شناخته میشود، توصیف شد؛ که مقادیر را به متغییرها تخصیص میدهد.در پایتون
==
مقدار را مقایسه میکند در مقابل جاوا که برای اعداد مقدار را مقایسه میکند ولی برای اشیاء مرجع را مقایسه میکند. در پایتون میتوان مقایسه را به صورت زنجیره ای انجام داد: مثلاً به صورت مقابلa <= b <= c
.در پایتون از لغات
and
,or
,not
برای عملگر دودویی استفاده میشود به جای استفاده از نمادهای&&
,||
,!
که در جاوا و سی کاربرد دارند.پایتون نوعی عبارت به نام خلاصه لیست list comprehension دارد که از پایتون ۲٫۴ به عبارت عمومیتری به نام جنراتور گسترش یافت.
توابع بینام که با به کار بردن عبارتهای لاندا اجرا میشوند. با این وجود محدودیت دارد و تنها یک عبارت میتواند باشد.
عبارتهای شرطی که به صورت
x if c else y
نوشته میشوند. (که ترتیب عملوندهای آن باc ? x : y
که در بسیاری از زبانهای دیگر مرسوم است متفاوت است)پایتون بین لیست و تاپل تمایز قائل میشود. لیستها به صورت
[۱, ۲, ۳]
نوشته میشوند و تغییرپذیر هستند؛ به همین دلیل نمیتواند به عنوان کلید دیکشنری استفاده شود. (کلیدهای دیکشنری باید تغییرناپذیر باشند) تاپلها به صورت(۱, ۲, ۳)
نوشته میشوند، تغییرناپذیر هستند، تمام اعضای آن نیز باید تغییرناپذیر باشند و میتواند به عنوان کلید دیکشنری استفاده شوند. عملگر+
میتواند برای به هم چسباندن دو تاپل استفاده شود.
متدها
متدها توابعی هستند که روی اشیاء یک کلاس اجرا میشوند؛ نحو instance.method(argument)
و Class.method(instance,argument)
هر دو برای متدها و توابع نرمال استفاده میشوند ولی اولی خوانایی بیشتری دارد. متدهای پایتون، یک پارامتر self
آشکار برای دستیابی به دادههای instance
دارند، در مقابل پارامتر self
در برخی زبانها غیر آشکار است زبانهای برنامهنویسی شیء گرا (مانند جاوا، C++ ، یا روبی)
نوع دهی
پایتون از نوع دهی ادکی استفاده میکند. محدودیت تایپ در زمان کامپایل چک نمیشود؛ بنابراین عمل گرهای روی یک شیء ممکن است شکست بخورند، به این مفهوم که شیء داده شده از یک تایپ مناسب نیست. با اینکه اجباری در تایپ دهی ایستا نیست. نوع دهی پایتون نیرومند است؛ به همین دلیل اعمالی که به خوبی تعریف نشده باشند را منع میکند؛ مانند جمع کردن یک متغیر رشته با عدد.
پایتون به برنامه نویسان اجازه میدهد با استفاده از کلاس، نوعهای دلخواه خودشان را تعریف کنند. نمونههای جدید هر کلاس با فراخوانی آن کلاس ساخته میشوند؛ مثلاً SpamClass()
یا EggsClass()
و خود کلاسها نمونههایی از متاکلاس type
هستند.
پایتون قبل از نسخهٔ ۳٫۰ دو نوع کلاس داشت یکی شیوهٔ قدیم old-style و دیگری شیوهٔ جدید new-style. نحو هر دو مشابه است تفاوت در این است که کلاس object
مستقیماً به ارث برسد یا نه. تمام کلاسهای شیوهٔ جدید object
را به ارث میبرند و نمونهای از type
هستند)
کلاسهای پایتون
تایپ | تغییرپذیری | توصیف | مثال نحو |
---|---|---|---|
| تغییرناپذیر | ایندکس در آرایه نامپای |
|
| تغییرناپذیر | یک شیء که نشان دهندهٔ وجود نداشتن مقدار است و در زبانهای دیگر با نام null شناخته میشود (اشارهگر هیچمقدار) |
|
| تغییرناپذیر | یک مکان نگهدارنده که میتواند از طریق اپراتورهای دارای بار اضافی برگردانده شود تا انواع عمل پشتیبانی نشده را نشان دهد. |
|
| تغییرناپذیر | فقط میتواند دو مقدار به خود بگیرد: درست(True) یا نادرست(False) |
|
عدد | |||
| تغییرناپذیر | عدد صحیح |
|
| تغییرناپذیر | وقتی ذخیره کردن یک عدد صحیح سر ریز داشته باشد، با دقتی نامحدود | |
| تغییرناپذیر | عدد اعشاری |
|
| تغییرناپذیر | عدد مختلط با عدد حقیقی و قسمت موهومی |
|
دنباله | |||
| تغییرپذیر | دنبالهای از بایتها | |
| تغییرناپذیر | دنبالهای از بایتها | |
| تغییرپذیر | لیستی از اشیاء که ترتیب خاصی دارند و آن اشیاء میتوانند تایپهای مختلفی باشند. | |
| تغییرناپذیر | رشتهای از کاراکترها | |
| تغییرناپذیر | مثل | |
مجموعه | |||
| تغییرناپذیر | مجموعه (مجموعه از اشیاء که بدون ترتیب تکرار هستند) در صورت هشبل بودن میتواند انواع مختلفی از اشیاء را همزمان بپذیرد. | |
| تغییرپذیر | مثل | |
نگاشت[x] | |||
| تغییرپذیر | گروهی از جفتهای کلید و مقدار | |
نوعهای قابل فراخوانی[y] | |||
| تغییرناپذیر | دنبالهای از اعداد است که معمولاً از آن برای حلقه با تعداد مشخصی از تکرار استفاده میشود | |
| تغییرناپذیر | توابع با سرعت و حجم کمتر از | |
همه کلاسها در … | |||
| تغییرناپذیر | کلاسها خودشان نمونههایی از کلاس |
^ مستقیما از طریق نام قابل دسترسی نیست.
پایتون همچنین به برنامهنویسها اجازه میدهد که تایپ دلخواه خود را تعریف کنند. این کار با استفاده از کلاسها امکانپذیر است و اغلب برای شیء گرایی در برنامهنویسی استفاده میشود. نمونههای جدید از کلاسها با صدا زدن کلاس ساخته میشوند و کلاسها خودشان نمونههایی از کلاس type
هستند (خودش یک نمونه از خودش است).
متغیرها
در پایتون میتوان با ایجاد متغیرهایی کلاسهای بالا را ذخیره کرد. برای اینکار باید نام متغیر را مساوی مقدار قرار دهید. یعنی: g = 2
که جی نام متغیر و ۲ مقدار متغیر است. برای آنکه از طریق خط فرمان مقدار را دریافت کنید، باید از input
استفاده کنید که آن هم در یک متغیر ذخیره میشود:
input('enter str:')
پایتون ۲ بهطور خودکار از عدد استفاده میکند اما پایتون ۳ از رشته بهطور خودکار استفاده میکند. اگر میخواهید از کلاسهایی غیر از رشته استفاده کنید، باید از تبدیلگر استفاده کنید:
int(input('enter age:'))
اگر میخواهید چند متغیر را در یکخط بنویسید، باید ابتدا نام متغیرها و بعد مقادیر را بنویسید:
f , g , h = ۱ , ۲ , ۳
اگر میخواهید به چند متغیر یک مقدار را نسبت دهید، باید ابتدا نام متغیرها و بعد مقدار را بنویسید:
a = b = c = d = ۱
عملگرهای مقایسهای
==
برای تشخیص آنکه ورودی با مقدار مقدار دادهشده برابر است:g == 2
<>
(پایتون ۲) و=!
(پایتون ۳) برای تشخیص مساوینبودن ورودی و مقدار دادهشده:g != ۲
<
برای تشخیص بزرگتر بودن ورودی از مقدار و =<
برای تشخیص بزرگتر یا مساوی بودن ورودی از مقدار.
>
برای تشخیص کوچکتر بودن ورودی از مقدار و =>
برای تشخیص کوچکتر یا مساوی بودن ورودی از مقدار.is
برای تشخیص هماهنگی ورودی و مقدار وis not
برای تشخیص هماهنگی نبودنin
برای تشخیص قرارداشتن مقدار در ورودی وnot in
برای تشخیص برعکس
در صورت درست بودن به ما True
و در غیر این صورت، False
میدهد
عملگرهای ریاضی
در پایتون میتوان با عملگرهای ریاضی، عملهایی از جمله جمع، تفریق و ضرب و تقسیم را انجام داد:
+
برای جمع:۲+۲
-
برای تفریق:۲-۲
*
برای ضرب:۲*۲
**
برای بهتوان:۲**۲
/
برای تقسیم:۲/۲
(در پایتون ۲ برای بهدست آوردن بخش اعشار، باید یا هردو یا یکی از اعداد را با نقطه یا نقطهصفر: ۷/۲. ۷.۰/۲.۰ ۷.۰/۲
بگذاریم که در پایتون ۳ مشکل حل شد)//
برای خارج قسمت تقسیم:۲//۲
%
برای باقی مانده تقسیم:۲%۲
این عملگرها بر روی int
، float
str
و list
کار میکنند.
تغییر دادن مقدار متغیر با عملگر ریاضی
=+
برای اضافه کردن به متغیر مثلاً۴=+i
یعنی ۴ تا به متغیر i اضافه کن.=-
برای کمکردن از متغیر مثلاً۴=-i
یعنی ۴ تا از متغیر i کم کن.و به همین ترتیب برای ضرب، بهتوان، تقسیم، خارج قسمت تقسیم و باقیمانده تقسیم ابتدا عملگر و سپس علامت مساوی را میگذاریم.
ماژولها در پایتون
برخی از کدها برای خلوتسازی پایتون، در ماژولها وارد شدهاست.
برای وارد کردن ماژول به سه روش از import
استفاده میشود:
import <module name> [as <alias>]
یا
from <module name> import *
یا
from <module name> import <definition ۱> [as <alias ۱>][, <definition ۲> [as <alias ۲>]][, ...]
برای ساختن ماژول، ابتدا کلاسها، توابع و متغیرهایی را در یک فایل ذخیره میکنیم و نام فایل را در <module name>
قرار میدهیم. (کد فایل را لازم نیست وارد کنید)
نمونه کد پایتون
برنامه سلام دنیا
برنامهٔ برنامه «سلام، دنیا!» زیر، با استفاده از کتابخانه استاندارد و جریانهای خروجی یک متن را به خروجی استاندارد ارسال مینماید
print('Hello, world!')
برنامه محاسبهٔ فاکتوریل
n = int(input('Type a number, and its factorial will be printed: '))
if n < ۰:
raise ValueError('You must enter a non negative integer')
fact = ۱
for i in range(۲, n + ۱):
fact *= i
print(fact)
کتابخانه استاندارد
پایتون یک کتابخانه استاندارد بزرگ دارد که از آن به عنوان یکی از بزرگترین توانایی پایتون یاد میشود، مشروط به اینکه ابزارهای از پیش نوشته شده، با بسیاری از وظایف سازگار باشد. ماژولهای کتابخانه استاندارد میتوانند به شیوه ماژولهای نوشته شده در سی یا پایتون آرگومان دهی شوند. اخیراً کتابخانههای C++ به یک کتابخانه به نام Boost.Python رشد یافتهاست، برای ایجاد قابلیت همکاری بین C++ و پایتون. به دلیل تنوع گسترده در ابزارهای تولید شده توسط کتابخانه استاندارد، این کتابخانه با توانایی استفاده یک زبان سطح پایین ترکیب شده، مثل C و C++ که البته به عنوان واسط بین کتابخانههای دیگر است، پایتون میتواند یک واسط قوی بین زبانها و ابزارها باشد.
کتابخانهٔ استاندارد با تعداد زیاد فرمتها و پروتکلهایی که حمایت میکند (مانند امآیامئی و اچتیتیپی)، خصوصاً برای نوشتن علائم اینترنت مناسب است. پایتون همچنین ماژولهایی برای ایجاد واسط کاربر گرافیکی، اتصال به پایگاه داده رابطهای، تولید اعداد شبه تصادفی، محاسبات با دقت دلخواه اعشاری، دستکاری عبارات با قاعده و آزمایش واحد دارد. بعضی از قسمتهای کتابخانهٔ استاندارد در سند مشخصات توضیح داده شدهاند. (مثل WSGI wsgiref
که پیرو PEP 333 است) اما اکثریت ماژولها اینگونه نیستند. آنها از طریق کدها، اسناد داخلی، و دنباله تست شان (اگر موجود باشد) تعیین میشوند. اگر چه، به دلیل اینکه کد پایتون اکثر کتابخانههای استاندارد، چندسکویی است، فقط ماژولهای اندکی هستند که باید برای پیادهسازیهای دیگر تغییر داده شوند یا مجدّداً نوشته شوند. در نوامبر ۲۰۱۹ (PyPI) مخزن رسمی برای نرمافزارهای شخص سوم پایتون بالغ بر ۲۰۰۰۰۰ پکیج دارد. پکیجهای پایتون در زمینههای گوناگونی کاربرد دارند:
- خودکارسازی
- آنالیز داده
- پایگاه داده
- سندپردازی
- رابط کاربر گرافیکی
- پردازش تصویر
- یادگیری ماشین
- اپ موبایل
- چندرسانهای
- شبکه
- محاسبهٔ علمی
- مدیریت سیستم
- ابزار تست نرمافزارها
- پردازش متن
- چارچوبهای نرمافزاری تحت وب
- تراش دادن داده وب
محیطهای ویرایشگر کد پایتون
نوشتار(های) وابسته: مقایسه محیطهای یکپارچه توسعه نرمافزار § پایتون
بیشتر پیادهسازیهای پایتون (شامل سی پایتون، اولین پیادهسازی) میتوانند مثل یک مفسر خط فرمان عمل کنند، برای زمانی که کاربر رشته شرط را وارد میکند و فوراً نتیجه را میپذیرد. خلاصه پایتون به عنوان یک برنامه واسط عمل میکند. وقتی صرف دیگر شیوههای اجرا (کامپایل کد بایت یا کامپایل کد محلی) به صورت یک رشته صرف ذخیره میشود، یک افزایش سرعت در هزینههای متقابل به وجود میآید، بنابراین آنها معمولاً فقط خارج از مفسر خط فرمان استفاده میشوند. (وقتی یک ماژول وارد میشود)
برنامههای واسط دیگر، امکانات تحت آن را در مفسر بیسیک افزایش میدهند، شامل آیدیالئی و آیپایتون. وقتی عموماً از برنامه واسط پایتون پیروی میشود، خصوصیاتی مشابه تکمیل خودکار، نگه داشتن زمان اجرای برنامه و نشان دادن صرف پیادهسازی میشود.
واسط گرافیکی
برای پایتون واسط گرافیکی کاربرهای بسیاری نوشته شدهاست که پرکاربردترین آنها به شرح زیر است:
تیکینتر (به صورت پیشفرض همراه با نسخههای استاندارد پایتون ارائه میشود و یک رابط شیءگرا برای ابزار Tcl/Tk در محیط پایتون فراهم میکند)
پایکیوت
پایجیتیکی
وکس پایتون
افالتیکی پای
افایکس پای
پایاوپنجیال
نمونه کد تکینتر
import tkinter as tk
fenster = tk.Tk()
fenster.geometry("۲۰۰x100")
label = tk.Label(fenster, text="Hallo Welt!")
label.pack()
def befehl():
fenster.destroy()
button = tk.Button(fenster, text="OK", command=befehl)
button.pack()
پنجرهای که با اجرای کد بالا نمایش داده میشود.
نمونه کد ترتل گرافیکس
import turtle
from turtle import speed, reset, goto
speed(۰)
reset()
turtle.x = -۲۰۰
turtle.y = ۲۰۰
while turtle.y != -۲۰۰:
goto(turtle.x, turtle.y)
turtle.x = - turtle.x
turtle.y = - turtle.y
goto(turtle.x, turtle.y)
goto(۰, ۰)
turtle.y = - turtle.y
turtle.x = - turtle.x
turtle.y -= ۵
نتیجه کد بالا
تصاویر کشیده شده با ترتل
دایرهٔ رنگی
ستاره
ترسیم مربع با ترتل