پایتون (زبان برنامه‌نویسی)

زبان برنامه‌نویسی سطح بالا و همه‌منظوره

پایتون (به انگلیسی: Python) یک زبان برنامه‌نویسی تفسیری، سطح بالا، و همه منظوره است، که توسط خیدو فان روسوم طراحی، و اولین بار در سال ۱۹۹۱ منتشر شده‌است. فلسفه اصلی طراحی پایتون «خوانایی بالای کد» می‌باشد و نویسه‌های فاصله خالی در آن معنادار هستند و مکرر استفاده می‌شوند. ساختار زبانی و دیدگاه شیءگرا در پایتون به گونه‌ای طراحی شده‌است که به برنامه‌نویس امکان نوشتن کد منطقی و واضح (بدون ابهام) را برای پروژه‌های کوچک و بزرگ می‌دهد.[۲۷]

پایتون
Python logo and wordmark.svg
الگو برنامه‌نویسیچند الگویی: تابعی، دستوری، شی‌گرا، پژواکی
طراحی شده توسطخیدو فان روسوم
توسعه‌دهندهبنیاد نرم‌افزاری پایتون
ظهوریافته در۲۰ فوریه ۱۹۹۱؛ ۲۹ سال پیش (۱۹۹۱-۰۲-20)
انتشار پایدار
۳٫۸٫۵
۲۰ ژوئیه ۲۰۲۰؛ ۲۳ روز پیش (۲۰۲۰-۰۷-20)[۱]
انتشار آزمایشی
3.9.0b5
۲۰ ژوئیه ۲۰۲۰؛ ۲۳ روز پیش (۲۰۲۰-۰۷-20)[۲]
اردکی، پویا، تدریجی (از پایتون(3.5))[۳]
پروانهPython Software Foundation License
قبل از ویرایش 3.5: .py, .pyc, .pyd, .pyo ,[۴]
از ویرایش 3.5:.pyw, .pyz[۵]
وبگاه
پیاده‌سازی‌های بزرگ
سی‌پایتون، IronPython, جایتون، MicroPython, Numba, پای‌پای، Stackless Python
گویش
RPython، سایتون[۶]
تأثیر گرفته از
تأثیر گذاشته بر

Python Programming در ویکی‌کتاب (انگلیسی)

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

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

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

این زبان از زبان‌های برنامه‌نویسی مفسر بوده و به صورت کامل یک زبان شیءگرا است که در ویژگی‌ها با زبان‌های تفسیری پرل، روبی، اسکیم، اسمال‌تاک و تی‌سی‌ال مشابهت دارد و از مدیریت خودکار حافظه استفاده می‌کند.[۲۸][۲۹][۳۰]

زبان پایتون ۲ رسماً از سال ۲۰۲۰ دیگر پشتیبانی نمی‌شود و پایتون ۲٫۷٫۱۸ آخرین نسخهٔ پایتون ۲٫۷ و همچنین پایتون ۲ است. و ازاین به بعد دیگر هیچ وصلهٔ امنیتی ای یا بهبود دیگری در این نسخه داده نخواهد شد.[۳۱][۳۲] با پایان پشتیبانی از پایتون ۲ فقط پایتون ۳ نسخه‌های بعدی آن پشتیبانی خواهند شد.[۳۳]

پایتون پروژه‌ای آزاد و متن‌باز توسعه‌یافته‌است و توسط بنیاد نرم‌افزار پایتون مدیریت می‌گردد.[۳۴]

تاریخچهویرایش

 
مخترع زبان پایتون خودو فان روسوم

پایتون اواخر دهه ۱۹۸۰ (میلادی) توسط خودو فان روسوم در مؤسسه ملی تحقیقات ریاضی و رایانه (CWI) در کشور هلند ایجاد شد.

هدف خَودو ایجاد جانشینی برای زبان برنامه‌نویسی ای‌بی‌سی بود[۳۵] که قابلیت پردازش استثناها را داشته باشد.[۳۶] خَودو طراح اصلی پایتون است و نقش مداوم او در تصمیم‌گیری پیرامون اهداف پایتون، باعث شد که انجمن پایتون به او لقب دیکتاتور خیرخواه جاویدان را بدهد.[۳۷]

نسخه‌های اولیهویرایش

در سال ۱۹۹۱ فان روسوم کدی با برچسب نسخه ۰٫۹٫۰ را منتشر کرد. البته در این مرحله از پیشرفت کلاس‌هایی با خاصیت ارث بری، پردازش استثنا، توابع و انواع داده list, dict, str وجود داشت. همچنین در این نسخه ابتدایی یک سیستم ماژول با اقتباس از ماژول-۳ وجود داشت، که فان روسوم این ماژول را به عنوان «یکی از واحدهای عمده برنامه‌نویسی پایتون» توصیف کرد. مدل استثناء پایتون نیز شباهت‌هایی به ماژول-۳ داشت، که به آن شرط else افزوده شده بود. در سال ۱۹۹۴ اولین مجمع مباحثه پیرامون پایتون شکل گرفت که مرحله برجسته‌ای در پیشرفت کاربری پایتون بود.

نسخه ۱٫۰ویرایش

پایتون در ژانویه ۱۹۹۴ به نسخه ۱٫۰ رسید. خصوصیات عمده جدید این نسخه شامل ابزارهای برنامه‌نویسی تابعی lambda , map , filter, reduce بود.

پایتون نسخه ۱٫۲ در سال ۱۹۹۵، زمانی‌که خَودو در CVVI بود، ارائه شد. خَودو به فعالیت‌های خود روی پایتون در مؤسسه ملی تحقیقات و ابتکارات (CNRI) در رستون ادامه داد و در همان‌جا چندین نسخه جدید انتشار یافت.

در نسخه ۱٫۴ به پایتون چندین ویژگی جدید اضافه شد. از ویژگی‌های جالب توجه در میان این اضافات می‌توان به الهام گرفتن از آرگومان‌های کلیدی ماژول-۳ (که خود از آرگومان‌های کلیدی لیسپ الهام گرفته بود) و همچنین پشتیبانی اعداد مختلط اشاره کرد.

در مدت فعالیت فان روسوم در CNRI، او پروژه «برنامه‌نویسی کامپیوتر برای هر کس» (CP4E) را ایجاد کرد تا برنامه‌نویسی را در دسترس افراد بیشتری که اطلاعات پایه‌ای برای برنامه‌نویسی (برای مثال توانایی در زبان انگلیسی و مهارت‌های اولیهٔ ریاضی) را دارند، قرار دهد. زبان برنامه‌نویسی پایتون به دلیل تمرکزش بر روی پاکسازی فرم دستوراتش، نقش مرکزی را ایفا کرد. این پروژه توسط دارپا سرمایه‌گذاری شد و از سال ۲۰۰۷ غیرفعال شد.

متن باز و آزاد بودنویرایش

در سال ۲۰۰۰ تیم توسعه دهنده پایتون به BeOpen.com منتقل شد و بدین صورت تیم کتابخانه باز پایتون شکل گرفت. به پیشنهاد CNRI ورژن ۱٫۶ساخته شد، بدین ترتیب برنامه‌های تولید شده برای ۱٫۶و ۲٫۰اشتراک‌های قابل توجهی داشتند. فقط پایتون ۲٫۰ توسط BeOpen.com طراحی شده بود. بعد از تولید پایتون ۲٫۰ توسط BeOpen.com، خَودو و دیگر توسعه دهندگان کتابخانه پایتون به ایجاد دیجیتال روی آوردند. تولید پایتون ۱٫۶ شامل جواز جدید CNRI بود که به‌طور قابل توجهی طولانی‌تر از جواز CWI (که برای تولیدات قبلی استفاده شده بود) بود. بنیاد نرم‌افزار آزاد توضیح داد که انتخاب شرط قانون با GNU GPL ناسازگار بود. , BeOpen CNRI و FSF تغییراتی را در جواز پایتون ایجاد کردند که با GPL سازگار باشد. پایتون ۱٫۶٫۱ عمدتاً مشابه پایتون ۱٫۶ است فقط با کمی اشکال، و با جواز سازگار با GPL.

نسخه ۲٫۰ویرایش

پایتون ۲٫۰ فهرستی از ویژگی‌هایی را که از زبان‌های برنامه‌نویسی تابعی ستل و هسکل اقتباس شده بود، معرفی کرد.[۳۸] نحو پایتون برای این ساختار (جدا از برتری هسکل برای کاراکترهای نقطه‌گذاری و کلمات الفبا) بسیار مشابه هسکل بود. پایتون ۲٫۰ همچنین یک سیستم بازیافت حافظه با قابلیت جمع‌آوری منابع معرفی کرد. پایتون ۲٫۱ به پایتون ۱٫۶٫۱ و ۲٫۰ نزدیک بود. جواز آن به جواز مؤسسه نرم‌افزار پایتون تغییر نام یافت. همه کدها، اسناد و مشخصات اضافه شده را از زمان تولید الفبای پایتون ۲٫۱ توسط مؤسسه نرم‌افزار پایتون (PFS) دارا شد. یک سازمان غیرانتفاعی در سال ۲۰۰۱ تشکیل شد که از مؤسسه نرم‌افزار آپاچی مدل گرفته بود. تولیدات شامل تغییراتی در خصوصیات زبان در پوشش حوزه‌های تو در تو بود، مشابه دیگر زبان‌های حوزه‌ای ایستا. (این خصوصیات دوباره از بین رفتند و به پایتون ۲٫۲ منتقل نشدند) یک تغییر بزرگ در پایتون ۲٫۲ یکسان‌سازی انواع داده‌ای پایتون و کلاس‌ها به یک سلسله مراتب بود. این یکسان‌سازی اشیاء پایتون را کاملاً شیء گرا کرد.

میراث جاواویرایش

انتخاب نحو و ضمایم کتابخانه استاندارد پایتون شدیداً وابسته به بعضی موارد در جاوا بود: بسته logging در ورژن ۲٫۳، تجزیه‌کننده SAX در ورژن ۲٫۰ و ساختمان‌های نحو که در ورژن ۲٫۴ اضافه شد.

توسعه خصوصیاتویرایش

یک طرح افزایش (PEP) در پایتون یکنواخت کردن اسنادی است که اطلاعات عمومی ای را که پایتون را شرح می‌دهند تولید می‌کنند؛ شامل پیشنهادها، توصیف‌ها و توضیح‌ها برای خصوصیات زبان. PEP در نظر داشت همانند روش‌های اولیه، برای پیشنهاد خصوصیات جدید و نیز برای مستندسازی طرح‌های اساسی، هر عامل بزرگ در پایتون را توضیح دهد. طرح‌های برجسته توسط van Rossum تجدید نظر شده و توضیح داده شدند.

پایتون ۳ویرایش

پایتون ۳٫۰ (که پایتون ۳۰۰۰ ویا Py3k نیز خوانده می‌شود) به منظور شکستن سازگاری عقبرو (به انگلیسی: backward compatibility) یا به عبارتی قطع سازگاری با گذشته پایتون ۲ و بهبود خطاها و رخنه‌ها در نسخهٔ ۲ و همچنین حذف روش‌های قدیمی طراحی شد.[۳۹] به عبارتی دیگر لازم نیست که پایتون ۳ بتواند کدی که با پایتون ۲ نوشته شده را تفسیر کند که البته این مشکل توسط نرم‌افزار 2to3 حل می‌شود.[۴۰]

فلسفهویرایش

پایتون ۳٫۰ با همان فلسفه ورژن‌های قبل، در حال توسعه یافتن است، بنابراین هر منبعی در فلسفه پایتون، در پایتون ۳٫۰ به خوبی ظاهر خواهد شد. اگر چه، همان‌طور که پایتون روش‌های جدید در برنامه‌ریزی را جمع‌آوری کرده، پایتون ۳٫۰ تأکید زیادی بر از بین بردن ساختارها و ماژول‌های تکراری دارد: «باید یک – و ترجیحاً فقط یک – روش بدیهی برای انجام آن وجود داشته باشد.» با این وجود پایتون ۳٫۰ به ساختار زبان چند نمونه‌ای ادامه خواهد داد. کد نویس‌ها همچنان اختیارات شیء گرایی، برنامه‌نویسی ساخت یافته، برنامه‌نویسی تابعی و دیگر نمونه‌ها را دارند، اما در انتخاب‌های وسیع، جزئیات در پایتون ۳٫۰ آشکارتر از پایتون سری x.۲ هستند.

سازگاری و همزمانیویرایش

اولین کاندید پایتون ۳٫۰ در ۱۷ سپتامبر ۲۰۰۸منتشر شد. پایتون سری ۲.x و ۳.x به‌طور موازی با هم وجود خواهند داشت، جایی که سری ۲.x سازگاری بیشتری دارد، به جای سری ۳.x مورد استفاده قرار خواهد گرفت. PEP ۳۰۰۰ اطلاعات بیشتری را در مورد فهرست نشریات دارا ست. پایتون ۳٫۰ سازگاری قبل را نقض خواهد کرد. الزامی ندارد که کدهایی که با پایتون ۲.x اجرا می‌شوند، برای پایتون ۳٫۰ بدون تغییر اجرا شوند. چون تغییرات اساسی بین این دو ورژن وجود دارد مثل اختلاف در حالت پرینت (بنابراین هر استفاده از پرینت به عنوان توضیح باعث شکست برنامه می‌شود) نوع پویای پایتون با طرح‌های تغییر معنای روش‌های خاص دیکشنری ترکیب می‌شود، به عنوان مثال، انتقال مکانیکی بی نقص از پایتون ۲.x به پایتون ۳٫۰ را بسیار دشوار می‌کند. اگرچه ابزاری به نام «۲to۳» بسیاری از این وظایف انتقال را انجام می‌دهد، اما باید توجه داشت که استفاده از توضیحات یا اخطارها با ابهام همراه است. البته در یک مرحله از الفبا، ۲to۳ انتقال را حقیقتاً کامل انجام می‌دهد. PEP ۳۰۰۰ پیشنهاد می‌کند که یک منبع نگه داشته شود (برای سری ۲.x)، و نسخه‌ای بر مبنای پایتون ۳٫۰ با استفاده از ۲to۳ تولید شود. کدهای نتیجه شده نباید تصحیح شوند، مگر اینکه کدی طولانی‌تر از محدوده سری ۲.x باشد. پایتون ۲٫۶ شامل خصوصیات سازگاری مستقیم است، به‌طوری‌که یک روش اخطار (warning) به صورت خودکار به مسائل انتقال هشدار می‌دهد. هشدارها باید برای تشخیص خطا گزارش داده شوند، مشابه خصوصیات ورژن‌های قبلی پایتون. (برای اطلاعات بیشتر به PEP ۳۶۱ رجوع کنید)

خصوصیاتویرایش

فهرست برخی از تغییرات عمده پایتون ۳٫۰:

  • تغییر پرینت چون یک تابع غیرقابل انتقال است نه یک توضیح. این باعث می‌شود که تغییر یک ماژول برای استفاده از یک تابع پرینت متفاوت، آسان باشد و بنابراین ایجاد نحو منظم تر می‌شود. در پایتون ۲٫۶ این امکان با تایپ کردن

from future import print function فراهم شد.

  • اضافه شدن حمایت از یادآوری تابع انتخابی که می‌تواند برای معرفی تایپ خصوصی یا اهداف دیگر استفاده شود.
  • یکسان کردن تایپ str/Unicode، به نمایندگی از یک متن، و معرفی یک تایپ byte تغییرناپذیر؛ با یک تایپ مطابق با bytearray تغییرپذیر، که هر دو آرایه از بایت را ارائه می‌کنند.
  • از بین بردن خصوصیات سازگاری معکوس، شامل کلاس‌های به فرم قبل، قسمت کردن اعداد صحیح، استثناءهای رشته‌ای، و گزارش‌های نسبتاً نا آشکار.

فلسفه برنامه‌نویسیویرایش

پایتون یک زبان برنامه‌نویسی چند پارادایمی است به طوریکه هم شیء گرایی و برنامه‌نویسی ساخت‌یافته را کاملاً پوشش داده‌است و هم بسیاری از خصوصیات پایتون برنامه‌نویسی جنبه گرا و تابعی را پوشش می‌دهد. پایتون از تایپ پویا و یک ترکیبی از شمارش مرجع و یک حلقه کشف و بازیافت قسمت‌های هدر رفته حافظه برای مدیریت حافظه، استفاده می‌کند. یک ویژگی مهم پایتون تحلیل نام پویا است، که روش‌ها و نام متغیرها را در طول اجرای برنامه به هم ملحق می‌کند.

طرح پایتون به پشتیبانی محدود برای برنامه‌نویسی تابعی به سنت لیسپ، ارائه شد. به همین منظور پایتون دارای توابع filter, map, و reduce و بیان‌های لیستها، دیکشنری‌ها، مجموعه ها، و جنراتور است.[۴۱] اگر چه، تشابه‌های عمده‌ای بین پایتون و زبان خانواده لیسپ وجود دارد. این کتابخانه دو ماژول دارد (itertools and functools) که ابزارهای تابعی را با اقتباس از هسکل و استاندارد ام‌ال پیاده‌سازی می‌کند.[۴۲]

هدف دیگر طراحی زبان آسان کردن توسعه‌پذیری است. ماژول‌هایی که تازه ساخته شده‌اند، به‌سادگی در C و C++‎ نوشته می‌شوند. پایتون همچنین می‌تواند به عنوان زبان توسعه برای ماژول‌ها و کاربردهای موجود که به برنامه واسط قابل برنامه‌ریزی نیاز دارد، استفاده شود. این طرح که یک زبان هسته کوچک با یک کتابخانه استاندارد بزرگ و یک مفسر آسان توسعه پذیر همراه باشد، توسط Van Rossum بیان شد.

فلسفهٔ اصلی پایتون در سند ذن پایتون (PEP 20) خلاصه شده‌است که شامل کلمات قصار زیر است:[۴۳]

  • زیبا بهتر از زشت است.
  • بیان صریح بهتر از ضمنی است.
  • ساده بهتر از پیچیده‌است.
  • پیچیده بهتر از خیلی پیچیده (افتضاح) است.
  • خوانایی مهم است.

به جای اینکه تمام عملکرد پایتون در هستهٔ آن متمرکز باشد طوری طراحی شده‌است که به خوبی از افزونه‌ها پشتیبانی کند. این ویژگی پایتون که آن را محبوب کرده‌است راهی برای اضافه کردن ای پی آی به نرم‌افزارهای موجود بوده‌است. ایدهٔ فان روسوم از زبانی با هستهٔ کوچک و کتابخانهٔ استاندارد بزرگ با قابلیت پشتیبانی از افزونه‌ها ریشه در سرخوردگی او از زبان ABC دارد.[۴۴]

پایتون تلاش می‌کند تا نحو و گرامری ساده‌تر و جمع و جور تر داشته باشد و به همین دلیل برای روش‌شناسی کد فقط یک انتخاب در مقابل توسعه دهنده قرار می‌دهد. روش پایتون در مقابل روش پرل (بیش از یک روش برای انجام آن وجود دارد) قرار دارد و فلسفهٔ طراحی آن چنین است «باید یک راه – و ترجیحاً فقط یک راه – آشکار برای انجام آن وجود داشته باشد.».[۴۳] Alex Martelli که نویسندهٔ کتاب‌های مربوط به پایتون است. می‌نویسد: «در فرهنگ پایتون 'هوشمندانه' توصیف کردن چیزی ستایش به‌شمار نمی‌رود[۴۵]

توسعه دهندگان پایتون سعی کردند از بهینه‌سازی زود هنگام اجتناب کنند و وصله‌های غیر حساس سی‌پایتون که باعث افزایش سرعت نهایی می‌شد را اضافه نکردند.[۴۶] هرگاه برای برنامه‌نویس پایتون سرعت اهمیت داشت او می‌تواند توابع زمانبر را به ماژول‌های افزونه ای ببرد و آن‌ها را به زبان‌هایی مثل سی بنویسد یا از پای‌پای استفاده کند که نوعی کامپایلر درجا است. از سایتون که اسکریپت پایتون را به سی ترجمه می‌کند نیز می‌توان استفاده کرد.

به کاربران و علاقه‌مندان پایتون مخصوصاً آنان که باتجربه و باسواد به حساب می‌آیند Pythonistas گفته می‌شود.[۴۷][۴۸]

واژه‌های ابداعیویرایش

یک واژه ابداعی رایج در انجمن پایتون، واژهٔ pythonic است، که محدوده وسیع معنایی را در بر می‌گیرد. وقتی می‌گوییم کدی پایتونیک است یعنی از نحو پایتون به خوبی استفاده کرده‌است در مقابل کد unpythonic کدیست که خوانایی بالایی ندارد و انگار به زبان دیگری نوشته شده‌است. این واژه گزینی با فلسفهٔ مینیمالیستی و خوانایی بالا در پایتون همخوانی دارد.

نام گذاریویرایش

نام پایتون از گروه کمدین بریتانیایی مانتی پایتون که سازندهٔ پایتون خیدو فان روسوم به آن علاقه‌مند بود گرفته شده‌است. اشاره به مانتی پایتان در فرهنگ پایتون و کدهای آن به وفور دیده می‌شود؛ [۴۹]

کاربردویرایش

سازمان‌های بزرگی مثل گوگل،[۵۰] یاهو،[۵۱] سرن،[۵۲] فیسبوک،[۵۳] اینستاگرام،[۵۴] و ناسا[۵۵] از پایتون استفاده می‌کنند. ITA[۵۶] نیز از پایتون برای بعضی از اجزای خود استفاده می‌کند. همچنین شبکهٔ اجتماعی ردیت نیز به‌طور کامل در پایتون نوشته شده‌است.[۵۷] پایتون در بسیاری از سیستم عامل‌ها به عنوان جزء استاندارد وجود دارد. پایتون در سیستم عامل‌های توزیع لینوکس،[۵۸] AmigaOS 4، فری بی‌اس‌دی، نت‌بی‌اس‌دی، اوپن‌بی‌اس‌دی و مک‌اواس می‌تواند از طریق خط فرمان (ترمینال) استفاده شود.

از پایتون استفاده وسیعی در صنعت امنیت اطلاعات می‌شود. مثل توسعهٔ اکسپلویت.[۵۹][۶۰]

جاسازیویرایش

پایتون با موفقیت در تعدادی از تولیدات نرم‌افزاری مثل زبان فایل آغاز گر تعبیه شده‌است. پایتون معمولاً در بسته‌های انیمیشن ۳D استفاده می‌شود، مانند Houdini, Maya, Softimage XSI, TrueSpace, Poser, Modo, Nuke, Blender. GIMP, کریتا، Inkcape و Scribus, Paint Shop Pro.

شرکت ازری (ESRI) هم‌اکنون در حال ترقی دادن پایتون به عنوان بهترین انتخاب برای نوشتن فایل آغازگر در آرک جی‌آی‌اس (ArcGIS) است. همچنین در بازی‌ها استفاده می‌شود، مانند Civilization IV و Mount&Blade به عنوان زبان کنترل برای نمایش و عکس‌العمل حوادث.

مقبولیتویرایش

در بسیاری از سیستم‌های عملیاتی، پایتون یک جزء استاندارد است؛ چون با بیشتر بخش‌های لینوکس انتقال داده می‌شود و روی NetBSD و OpenBSD و Mac OS X هم قابل نصب است. ردهت لینوکس و فدورا هر دو از نصب‌کننده پایتونی آناکوندا استفاده می‌کنند. لینوکس Gentoo از پایتون در سیستم مدیریت بسته، حمل و ابزارهای دستیابی خود استفاده می‌کند. Pardus از آن برای مدیریت و در طول راه‌اندازی سیستم استفاده می‌کند.

دستور زبانویرایش

پایتون در نظر دارد که زبانی بسیار قابل خواندن باشد؛ بنابراین به سمت یک طرح بندی ویژوال بدون پارازیت می‌رود، و اغلب از کلمات کلیدی انگلیسی استفاده می‌کند، در صورتی‌که دیگر زبان‌ها از نقطه‌گذاری استفاده می‌کنند. پایتون نسبت به زبان‌های ساخت یافته سنتی، مثل C و پاسکال، نیاز به تکیه کلام‌های کمتر و همچنین استثناءهای نحوی و موارد خاص کمتری دارد.

 
کدهای پایتون ۲ همراه با برجسته‌سازی نحو.

دندانه دار نوشتنویرایش

پایتون برای جداکردن بلوک کد به جای استفاده کردن از آکولاد از تورفتگی فاصله خالی استفاده می‌کند. برای شروع بلوک کد یک پله تورفتگی را بیشتر می‌کنیم و برای اتمام آن یک پله بلوک کد را کمتر می‌کنیم.[۶۱] پس ساختار ظاهری برنامه نمایش دهندهٔ ساختار معنایی آن است.[۶۲] این ویژگی ای که به نام قانون off-side نیز شناخته می‌شود؛ و در بعضی از زبان‌ها وجود دارد؛ ولی در بیشتر زبان‌های برنامه‌نویسی وجود تورفتگی معنای خاصی نمی‌دهد.

شرط‌ها و روند کنترلویرایش

شرط‌های پایتون شامل:

  • شرطif، که یک بلوک کد، تا رسیدن بهelse و elif(کوتاه شده else-if) را اجرا می‌کند.
  • شرط for، که روی یک شیء از نوع تکرار شدنی تکرار می‌شود، به هر متغیر محلی مقدار داده می‌شود برای استفاده توسط بلوک مربوط.
  • شرط while تا زمانی که شرط برقرار باشد بلوک کد را اجرا می‌کند.
  • شرط try برای استثناها از آن استفاده می‌شود؛ که اجازه می‌دهد بلوک کد همراه با آن با استفاده از except یا finally به کار گرفته شود.
  • شرط raise برای ایجاد استثناها از آن استفاده می‌شود.
  • شرط class ، که یک بلوک کد را اجرا می‌کند و فضاهای محلی آن را به یک کلاس ملحق می‌کند، برای استفاده در برنامه‌نویسی شیء گرا.
  • شرط def ، که تابع را تعریف می‌کند.
  • شرط with ، که یک بلوک کد را به یک مدیر محتوا ضمیمه می‌کند. (به عنوان مثال، اندوختن یک قفل قبل از اجرای بلوک کد و آزاد کردن قفل بعد از اجرا)
  • شرط break برای خروج از نزدیک‌ترین حلقه استفاده می‌شود.
  • شرط continue که برای پریدن از دور جاری و ادامه دادن از دور بعدی در نزدیک‌ترین حلقه استفاده می‌شود.
  • شرط pass که به عنوان NOP از آن استفاده می‌شود و از آن برای درست کردن بلوک کد خالی استفاده می‌شود.
  • شرط assert که هنگام دیباگ کردن استفاده می‌شود. شرطی که باید اتفاق بیافتد را بررسی می‌کند.
  • شرط yield که از آن در توابع مولد (جنراتور) به جای return استفاده می‌شود.
  • شرط print که در پایتون ۳ تبدیل به تابع print()‎ شد. (#خصوصیات)
  • شرط import که برای وارد کردن ماژول استفاده می‌شود.

هر شرطی برای خود قواعد معنایی خاصی دارد: به عنوان مثال، شرط def، بر خلاف دیگر شرط‌ها بلوک خود را فوراً اجرا نمی‌کند.

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

متدهاویرایش

متدها توابعی هستند که روی اشیاء یک کلاس اجرا می‌شوند؛ نحو instance.method(argument) و Class.method(instance,argument) هر دو برای متدها و توابع نرمال استفاده می‌شوند ولی اولی خوانایی بیشتری دارد. متدهای پایتون، یک پارامتر self آشکار برای دستیابی به داده‌های instance دارند، در مقابل پارامتر self در برخی زبان‌ها غیر آشکار است زبان‌های برنامه‌نویسی شیء گرا (مانند جاوا، C++‎، یا روبی)

 
سلسله مراتب تایپ‌ها در پایتون ۳

نوع دهیویرایش

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

کلاس‌های پایتون
تایپ تغییرپذیری توصیف مثال نحو
ellipsis تغییرناپذیر ایندکس در آرایه NumPy ...
Ellipsis
NoneType تغییرناپذیر یک شیء که نشان دهندهٔ وجود نداشتن مقدار است و در زبان‌های دیگر با نام null شناخته می‌شود (اشاره‌گر هیچ‌مقدار) None
NotImplementedType تغییرناپذیر یک مکان نگهدارنده که می‌تواند از طریق اپراتورهای دارای بار اضافی برگردانده شود تا انواع عمل پشتیبانی نشده را نشان دهد. NotImplemented
bool تغییرناپذیر فقط می‌تواند دو مقدار به خود بگیرد: درست(True) یا نادرست(False) True
False
عدد (number)
int تغییرناپذیر عدد صحیح 42
long تغییرناپذیر وقتی ذخیره کردن یک عدد صحیح سر ریز داشته باشد، به یک دقت نامحدود Long بسط خواهد یافت (تنها در پایتون ۲) 3457876312345678632235674225567773487L
float تغییرناپذیر عدد اعشاری 3.1415927
complex تغییرناپذیر عدد مختلط با عدد حقیقی و قسمت موهومی 3+2.7j
دنباله (Sequence)
bytearray تغییرپذیر دنباله ای از بایت‌ها bytearray(b'Some ASCII')
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
bytes تغییرناپذیر دنباله ای از بایت‌ها b'Some ASCI'
b"Some ASCII"
bytes([119, 105, 107, 105])
list تغییرپذیر لیستی از اشیاء که ترتیب خاصی دارند و آن اشیاء می‌توانند تایپ‌های مختلفی باشند. [4.0 ,'string', True]
str تغییرناپذیر رشته ای از کاراکترها 'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines"""
tuple تغییرناپذیر مثل listمنتها تغییرناپذیر (4.0 ,'string', True)
مجموعه (set)
frozenset تغییرناپذیر مجموعه (مجموعه از اشیاء که بدون ترتیب تکرار هستند) در صورت هشبل بودن می‌تواند انواع مختلفی از اشیاء را همزمان بپذیرد. frozenset([4.0, 'string', True])
set تغییرپذیر مثل frozenset منتها تغییرپذیر {4.0 ,'string', True}
نگاشت (mapping)
dict تغییرپذیر گروهی از جفت‌های کلیدها و مقادیر {'key1': 1.0, 3: False}
نوع‌های قابل فراخوانی (Callable types)
range تغییرناپذیر دنباله ای از اعداد است که معمولاً از آن برای حلقه با تعداد مشخصی از تکرار استفاده می‌شود[۶۳] range(1, 10)
range(10, -5, -2)
generator تغییرناپذیر توابع با سرعت و حجم کمتر از list (f for f in range(10))
همه کلاس‌ها در …
type تغییرناپذیر کلاس‌ها خودشان نمونه‌هایی از کلاس type هستند (خودش یک نمونه از خودش است). type(7)
type('wiki')

^ مستقیما از طریق نام قابل دسترسی نیست.

پایتون همچنین به برنامه‌نویس‌ها اجازه می‌دهد که تایپ دلخواه خود را تعریف کنند. این کار با استفاده از کلاس‌ها امکان‌پذیر است، و اغلب برای شیء گرایی در برنامه‌نویسی استفاده می‌شود. نمونه‌های جدید از کلاس‌ها با صدا زدن کلاس ساخته می‌شوند، و کلاس‌ها خودشان نمونه‌هایی از کلاس type هستند (خودش یک نمونه از خودش است).

متغیرهاویرایش

در پایتون می‌توان با ایجاد متغیرهایی کلاس‌های بالا را ذخیره کرد. برای اینکار باید نام متغیر را مساوی مقدار قرار دهید. یعنی: g = 2 که جی نام متغیر، و ۲ مقدار متغیر است. برای آنکه از طریق خط فرمان مقدار را دریافت کنید، باید از input استفاده کنید که آن هم در یک متغیر ذخیره می‌شود:

input('enter str:')

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

int(input('enter age:'))

اگر می‌خواهید چند متغیر را در یک‌خط بنویسید، باید ابتدا نام متغیرها و بعد مقادیر را بنویسید:

f , g , h = 1 , 2 , 3

اگر می‌خواهید به چند متغیر یک مقدار را نسبت دهید، باید ابتدا نام متغیرها و بعد مقدار را بنویسید:

a = b = c = d = 1

عملگرهای مقایسه ایویرایش

  • == برای تشخیص آنکه ورودی با مقدار مقدار داده‌شده برابر است: g == 2
  • <> (پایتون ۲) و =!‎ (پایتون ۳) برای تشخیص مساوی‌نبودن ورودی و مقدار داده‌شده: g != 2
  • < برای تشخیص بزرگتر بودن ورودی از مقدار و ‎=< برای تشخیص بزرگتر یا مساوی بودن ورودی از مقدار.
  • > برای تشخیص کوچکتر بودن ورودی از مقدار و ‎=> برای تشخیص کوچکتر یا مساوی بودن ورودی از مقدار.
  • is برای تشخیص هماهنگی ورودی و مقدار و is not برای تشخیص هماهنگی نبودن
  • in برای تشخیص قرارداشتن مقدار در ورودی و not in برای تشخیص برعکس

در صورت درست بودن، به‌ما True و در غیر این صورت، False می‌دهد

عملگرهای ریاضیویرایش

در پایتون می‌توان با عملگرهای ریاضی، عمل‌هایی از جمله جمع، تفریق و ضرب و تقسیم را انجام داد:

  • + برای جمع: 2+2
  • - برای تفریق: 2-2
  • * برای ضرب: 2*2
  • ** برای به‌توان: 2**2
  • / برای تقسیم: 2/2(در پایتون ۲ برای به‌دست آوردن بخش اعشار، باید یا هردو یا یکی از اعداد را با نقطه یا نقطه‌صفر: ‎7/2. 7.0/2.0 7.0/2 بگذاریم که در پایتون ۳ مشکل حل شد)
  • // برای خارج قسمت تقسیم: 2//2
  • % برای باقی مانده تقسیم: 2%2

این عملگرها بر روی int، float str و list کار می‌کنند.

تغییر دادن مقدار متغیر با عملگر ریاضیویرایش

  • =+ برای اضافه کردن به متغیر مثلاً 4=+i یعنی ۴ تا به متغیر i اضافه کن.
  • =- برای کم‌کردن از متغیر مثلاً 4=-i یعنی ۴ تا از متغیر i کم کن.
  • و به همین ترتیب برای ضرب، به‌توان، تقسیم، خارج قسمت تقسیم و باقی‌مانده تقسیم ابتدا عملگر و سپس علامت مساوی را می‌گذاریم.

ماژول‌ها در پایتونویرایش

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

برای وارد کردن ماژول، به سه روش از import استفاده می‌شود:

import <module name> [as <alias>]

یا

from <module name> import *

یا

from <module name> import <definition 1> [as <alias 1>][, <definition 2> [as <alias 2>]][, ...]

برای ساختن ماژول، ابتدا کلاس‌ها، توابع و متغیرهایی را در یک فایل ذخیره می‌کنیم و نام فایل را در <module name> قرار می‌دهیم. (کد فایل را لازم نیست وارد کنید)

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

برنامه Hello Worldویرایش

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

print('Hello, world!')

برنامه محاسبهٔ فاکتوریلویرایش

def factorial(n):
    f = 1
    if n == 0:
        f = 1
    else:
        for i in range(1,n+1):
            f *= i
    return f

تابع برای پیداکردن هش SHA-1ویرایش

import hashlib

def hash_file(filename):

   h = hashlib.sha1()
   with open(filename,'rb') as file:

        while True:
            chunk = file.read(1024)
            if chunk == b'':
                break
            h.update(chunk)

   return h.hexdigest()

پیاده‌سازیویرایش

پیاده‌سازی مرجعویرایش

سی‌پایتون رویهٔ اصلی پایتون است، که در نشست C در استاندارد C۸۹ نوشته شد ولی از چند ویژگی نشست C۹۹ نیز استفاده کرده‌است.[۶۴] سی‌پایتون برنامه‌های پایتون را به یک بایت‌کد میانی کامپایل می‌کند،[۶۵] تا بعد از آن ماشین مجازی آن را اجرا کند.[۶۶] سی‌پایتون با یک کتابخانه استاندارد بزرگ توزیع شده‌است، که به صورت مخلوطی از C و پایتون نوشته شده‌است. سی‌پایتون در ورژن‌های مختلف روی پلتفرم‌های زیادی کار می‌کند، مثل مایکروسافت ویندوز و بیشتر سیستم‌های پیشرفته یونیکس.[۶۷] استفاده و توسعه آن روی پایگاه‌های محرمانه مانند Amoeba، در کنار پایگاه‌های متداول مانند یونیکس یا مکینتاش، به‌طور عمده در این نظر کمک شده‌است.

دیگر پیاده‌سازی‌هاویرایش

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

پای پای (به انگلیسی: PyPy) یک مفسر سریع پایتون ۲٫۷ و ۳٫۶ است.[۶۸] پای‌پای یک نوع کامپایلر درجاست که باعث بیشتر شدن سرعت نسبت به سی‌پایتون می‌شود ولی در عوض از بسیاری از کتابخانه‌ها که به زبان سی نوشته شده‌اند نمی‌توان با آن استفاده کرد.[۶۹][۷۰]

پایتون بدون پشته(به انگلیسی: Stackless Python)، انشعابی از سی پایتون است که ریز برنامه‌ها را اجرا می‌کند؛ و از پشته حافظه استفاده نمی‌کند. سی پایتون از GIL استفاده می‌کند تا وقتی برنامه پایتون بدون پشته، وابسته به OS است و می‌تواند به صورت هم‌زمان اجرا شود، در هر لحظه فقط به یک زیر برنامه اجازه اجرا داده شود. پایتون برای استفاده در میکرو کنترلرها یا وظایف محدود دیگر پایگاه‌های مرجع، متناسب تر است. پیش‌بینی می‌شود که پایتون بدون پشته بتواند تقریباً روی همان پایگاهی که سی پایتون اجرا می‌شود، اجرا شود. پای‌پای نیز یک ورژن بدون پشته دارد.[۷۱]

چندین برنامه در بسته مفسر پایتون با برنامه‌های کاربردی (یا آغازگر) وجود دارد که مستقلاً اجرا می‌شوند مانند یونیکس، لینوکس، ویندوز، AmigaOS ۴ یا Mac OS X. بسیاری از کتابخانه‌های سه قسمتی (و حتی بعضی از یک قسمتی‌ها) فقط روی ویندوز، لینوکس، BSD و Mac OS X موجود هستند.

پیاده‌سازی‌های پشتیبانی نشدهویرایش

نوکیا در سال ۲۰۰۵ یک مفسر پایتون برای موبایل‌های سری ۶۰ با نام PyS۶۰ تولید کرد که شامل بسیاری از ماژولهای سی پایتون بود، و همچنین برخی ماژول‌های اضافه شده برای یکپارچه شدن با سیستم‌عامل. این پروژه به منظور اجرا روی همه پایگاه‌های مختلف S۶۰، به روز نگاه داشته می‌شود.[۷۲]

همچنین مفسری به نام پایتون سی ای برای ابزار ویندوز CE (شامل بسته PC) وجود دارد؛ که در آن ابزارهایی برای اجرای آسان و توسعه GUI اضافه شده‌است. اطلاعات بیشتر را می‌توانید روی وبگاه PythonCE بیابید.[نیازمند منبع]

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

تفسیر معناییویرایش

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

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

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

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

کتابخانه استانداردویرایش

پایتون یک کتابخانه استاندارد بزرگ دارد، که از آن به عنوان یکی از بزرگ‌ترین توانایی پایتون یاد می‌شود,[۷۳]، مشروط به اینکه ابزارهای از پیش نوشته شده، با بسیاری از وظایف سازگار باشد. ماژول‌های کتابخانه استاندارد می‌توانند به شیوه ماژول‌های نوشته شده در سی یا پایتون آرگومان دهی شوند. اخیراً کتابخانه‌های C++‎ به یک کتابخانه به نام Boost.Python رشد یافته‌است، برای ایجاد قابلیت همکاری بین C++‎ و پایتون. به دلیل تنوع گسترده در ابزارهای تولید شده توسط کتابخانه استاندارد، این کتابخانه با توانایی استفاده یک زبان سطح پایین ترکیب شده، مثل C و C++‎، که البته به عنوان واسط بین کتابخانه‌های دیگر است، پایتون می‌تواند یک واسط قوی بین زبان‌ها و ابزارها باشد.

کتابخانه استاندارد با تعداد زیاد فرمت‌ها و پروتکل‌هایی که حمایت می‌کند (مانند MIME و HTTP)، خصوصاً برای نوشتن علائم اینترنت مناسب است. ماژول‌ها برای ایجاد واسط کاربر گرافیکی، به پایگاه داده مربوط متصل می‌شود، محاسبات را با دقت دلخواه اعشاری انجام می‌دهد، و عبارت‌های منظم را دستکاری می‌کند. پایتون همچنین یک واحد تست مدیریت پایگاه داده برای تست کردن رشته‌ها دارد.

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

IDE محیط‌های ویرایشگر کد پایتونویرایش

IDE ویراشگر کد توسعه دهنده برنامه آخرین ویرایش پایدار آخرین تاریخ ارائه برنامه سیستم عامل مورد نیاز ابزار مجوز
اریک (نرم‌افزار) Detlev Offenbach 4.4.4a ۲۰۱۰-۰۵-۱۰ Independent Qt اجازه‌نامه عمومی همگانی گنو
ویژوال استودیو کد مایکروسافت ۱٫۲۸٫۱ ۲۰۱۸-۱۰-۲۰ چند سکویی متن باز
جینی Enrico Tröger ۰٫۱۷ ۲۰۰۹-۰۵-۰۲ Independent جی‌تی‌کی اجازه‌نامه عمومی همگانی گنو
پای‌چارم JetBrains ۲۰۱۸٫۲٫۴ ۲۰۱۸-۰۹-۱۹ چند سکویی Swing نرم‌افزار اختصاصی
IDLE خَودو فان روسوم و دیگران ۳٫۴٫۱ ۲۰۱۴ Independent تکینتر متن‌باز
Komodo IDE ActiveState ۶٫۰٫۰ ۲۰۱۰-۱۰-۰۷ چند سکویی موزیلا platform نرم‌افزار اختصاصی
مونودولاپ ناول and the Mono community ۲٫۲٫۱ ۲۰۱۰-۰۲-۰۳ چند سکویی Gtk# LGPL
نت‌بینز سان مایکروسیستمز ۶٫۹ ۲۰۱۰-۰۶-۱۵ چند سکویی Swing اجازه‌نامه عمومی همگانی گنو
PIDA Team ۰٫۶٫۲ ۲۰۱۰-۰۸-۰۴ چند سکویی پای‌جی‌تی‌کی اجازه‌نامه عمومی همگانی گنو
پای‌دو Aptana ۱٫۶٫۴ ۲۰۱۱-۰۱-۰۲ اکلیپس چند سکویی SWT EPL
Pymacs François Pinard ۰٫۲۳ ۲۰۰۸-۰۲-۲۸ چند سکویی ایمکس اجازه‌نامه عمومی همگانی گنو
Stani's Python Editor Stani 0.8.4h ۲۰۰۸-۰۲-۱۴ Independent wxPython اجازه‌نامه عمومی همگانی گنو
wxGlade Alberto Griggio ۰٫۶٫۳ ۲۰۰۸-۰۲-۰۲ Independent wxPython مجوز ام آی تی
Wing Wingware ۳٫۲٫۸ ۲۰۱۰-۰۶-۰۳ گنو/لینوکس، اواس ده، ویندوز جی‌تی‌کی+ نرم‌افزار اختصاصی
Spyder Spyder project contributors ۳٫۳٫۶ ۲۰۱۹٫۷٫۱۴ چندسکویی کیوت اجازه‌نامه عمومی همگانی گنو

واسط گرافیکیویرایش

برای پایتون واسط گرافیکی کاربرهای بسیاری نوشته شده‌است که پرکاربردترین آن‌ها به شرح زیر است:[۷۴][۷۵]

برنامه‌هایی که کاملاً یا بخشی از آن‌ها با پایتون نوشته شده‌استویرایش

  • اینستاگرام (Instagram): نرم‌افزار اشتراک‌گذاری تصاویر و ویدیوها
  • بیت‌تورنت (نرم‌افزار) (BitTorrent): نرم‌افزار کلاینت برای فایل‌های به اشتراک گذاشته شدهٔ (p2p) توسط پروتکل بیت‌تورنت
  • چندلر (Chandler): مدیر اطلاعات شخصی شامل تقویم، میل، کارهای روزانه، یادداشت‌ها و…
  • Civilization IV: یک گیم کامپیوتری بر مبنای پایتون که از boost.python استفاده می‌کند
  • میلمن (Mailman): یکی از معروفترین نرم‌افزارهای مرتبط با ایمیل
  • کمبیلو (Kombilo): مدیر پایگاه داده و مرورگر بازی‌های go
  • موین‌موین (MoinMoin): یکی از قدرتمندترین و معروفترین ویکی‌های موجود
  • پلون (Plone): یک ابزار مدیریتی محتوایی متن باز، قدرتمند و کاربر پسند
  • پورتاژ (Portage): قلب توزیع جنتو. یک مدیر بستهای سیستم لینوکس
  • زوپ (zope): یک پلتفورم شیء گرای مبتنی بر وب. زوپ شامل یک سرور نرم‌افزار به همراه پایگاه داده شیء گرا و یک رابط مدیریتی درونی مبتنی بر وب می‌باشد
  • اس‌پی‌ای (SPE): یک IDE رایگان، متن باز برای سیستم‌عامل‌های ویندوز، لینوکس، مک که از wxGlade(طراحی رابط کاربر),PyChecker (دکتر کد) (Blender(3D پشتیبانی می‌کند
  • یام (Yum): یک برنامه مدیریت بسته متن‌باز برای توزیع‌های سازگار با آرپی‌ام.
  • آباکوس(Abaqus):نرم‌افزار شبیه‌سازی با روش المان محدود که امکان اسکریپت‌نویسی به زبان پایتون را به کاربر می‌دهد.

جستارهای وابستهویرایش

منابعویرایش

  1. "Python 3.8.5". 20 July 2020. Retrieved 21 July 2020.
  2. "Python 3.9.0b5". Python.org. Retrieved 20 July 2020.
  3. "PEP 483 -- The Theory of Type Hints". Python.org.
  4. File extension .pyo was removed in Python 3.5. See PEP 0488
  5. Holth, Moore (30 March 2014). "PEP 0441 -- Improving Python ZIP Application Support". Retrieved 12 November 2015.
  6. "Starlark Language". Retrieved 25 May 2019.
  7. "Why was Python created in the first place?". General Python FAQ. Python Software Foundation. Retrieved 22 March 2007.
  8. "Ada 83 Reference Manual (raise statement)".
  9. Kuchling, Andrew M. (22 December 2006). "Interview with Guido van Rossum (July 1998)". amk.ca. Archived from the original on 1 May 2007. Retrieved 12 March 2012.
  10. ۱۰٫۰ ۱۰٫۱ "itertools — Functions creating iterators for efficient looping — Python 3.7.1 documentation". docs.python.org.
  11. van Rossum, Guido (1993). "An Introduction to Python for UNIX/C Programmers". Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group). CiteSeerX 10.1.1.38.2023. even though the design of C is far from ideal, its influence on Python is considerable.
  12. ۱۲٫۰ ۱۲٫۱ "Classes". The Python Tutorial. Python Software Foundation. Retrieved 20 February 2012. It is a mixture of the class mechanisms found in C++ and Modula-3
  13. Lundh, Fredrik. "Call By Object". effbot.org. Retrieved 21 November 2017. replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model.
  14. Simionato, Michele. "The Python 2.3 Method Resolution Order". Python Software Foundation. The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers
  15. Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. Retrieved 9 February 2012.
  16. Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 May 2001). "PEP 255 – Simple Generators". Python Enhancement Proposals. Python Software Foundation. Retrieved 9 February 2012.
  17. Smith, Kevin D.; Jewett, Jim J.; Montanaro, Skip; Baxter, Anthony (2 September 2004). "PEP 318 – Decorators for Functions and Methods". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 February 2012.
  18. "More Control Flow Tools". Python 3 documentation. Python Software Foundation. Retrieved 24 July 2015.
  19. "CoffeeScript". coffeescript.org.
  20. "The Genie Programming Language Tutorial". Retrieved 28 February 2020.
  21. "Perl and Python influences in JavaScript". www.2ality.com. 24 February 2013. Retrieved 15 May 2015.
  22. Rauschmayer, Axel. "Chapter 3: The Nature of JavaScript; Influences". O'Reilly, Speaking JavaScript. Retrieved 15 May 2015.
  23. "Why We Created Julia". Julia website. February 2012. Retrieved 5 June 2014. We want something as usable for general programming as Python [...]
  24. Ring Team (4 December 2017). "Ring and other languages". ring-lang.net. ring-lang.
  25. Bini, Ola (2007). Practical JRuby on Rails Web 2.0 Projects: bringing Ruby on Rails to the Java platform. Berkeley: APress. p. 3. ISBN 978-1-59059-881-8.
  26. Lattner, Chris (3 June 2014). "Chris Lattner's Homepage". Chris Lattner. Retrieved 3 June 2014. The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
  27. Kuhlman, Dave. "A Python Book: Beginning Python, Advanced Python, and Python Exercises". Section 1.1. Archived from the original (PDF) on 23 June 2012.
  28. Python Garbage Collection
  29. مستندات پایتون ۲ - زباله‌روب
  30. مستندات پایتون ۲ - زباله‌روب
  31. "Sunsetting Python 2". Python.org. Retrieved 2019-09-22.
  32. "PEP 373 -- Python 2.7 Release Schedule". Python.org. Retrieved 2019-09-22.
  33. "Python Developer's Guide — Python Developer's Guide". devguide.python.org. Retrieved 2019-12-17.
  34. «Python Programming Language – Official Website». Python Software Foundation. دریافت‌شده در ۵ فروردین ۱۳۹۰.
  35. «History and License». The Python Software Foundation. مارس ۲۴, ۲۰۱۱. دریافت‌شده در ۵ فروردین ۱۳۹۰.
  36. مستندات پایتون - پایتون برای چه ایجاد شد؟
  37. مشارکت‌کنندگان ویکی‌پدیا. «Benevolent Dictator For Life». در دانشنامهٔ ویکی‌پدیای انگلیسی، بازبینی‌شده در ۵ فروردین ۱۳۹۰.
  38. Functional Programming HOWTO
  39. «What's New In Python 3.0». Python Software Foundation. فوریه ۱۴, ۲۰۰۹. دریافت‌شده در ۵ فروردین ۱۳۹۰.
  40. «Automated Python 2 to 3 code translation». Python Software Foundation. فوریه ۱۴, ۲۰۰۹. دریافت‌شده در ۵ فروردین ۱۳۹۰.
  41. Hettinger, Raymond (30 January 2002). "PEP 289 – Generator Expressions". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012.
  42. "6.5 itertools – Functions creating iterators for efficient looping". Docs.python.org. Retrieved 22 November 2016.
  43. ۴۳٫۰ ۴۳٫۱ Peters, Tim (19 August 2004). "PEP 20 – The Zen of Python". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008.
  44. Venners, Bill (13 January 2003). "The Making of Python". Artima Developer. Artima. Retrieved 22 March 2007.
  45. Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2nd Edition. O'Reilly Media. p. 230. ISBN 978-0-596-00797-3.
  46. "Ebeab.com". ebeab.com.
  47. Goodger, David. "Code Like a Pythonista: Idiomatic Python". Archived from the original on 27 May 2014. Retrieved 24 March 2009.
  48. "How to think like a Pythonista". Archived from the original on 23 March 2018. Retrieved 8 July 2020.
  49. "Whetting Your Appetite". The Python Tutorial. Python Software Foundation. Retrieved 20 February 2012.
  50. "Quotes about Python". Python Software Foundation. Retrieved 8 January 2012.
  51. "Organizations Using Python". Python Software Foundation. Retrieved 15 January 2009.
  52. "Python: the holy grail of programming". CERN Bulletin. CERN Publications (31/2006). 31 July 2006. Retrieved 11 February 2012.
  53. "Tornado: Facebook's Real-Time Web Framework for Python - Facebook for Developers". Facebook for Developers. Retrieved 2018-06-19.
  54. "What Powers Instagram: Hundreds of Instances, Dozens of Technologies". Instagram Engineering. Retrieved 27 May 2019.
  55. Shafer, Daniel G. (17 January 2003). "Python Streamlines Space Shuttle Mission Design". Python Software Foundation. Retrieved 24 November 2008.
  56. Taft, Darryl K. (5 March 2007). "Python Slithers into Systems". eWeek.com. Ziff Davis Holdings. Retrieved 24 September 2011.
  57. GitHub - reddit-archive/reddit: historical code from reddit.com., The Reddit Archives, 2019-03-19, retrieved 2019-03-20
  58. "Python Setup and Usage". Python Software Foundation. Retrieved 10 January 2020.
  59. "Immunity: Knowing You're Secure". Archived from the original on 16 February 2009.
  60. "Core Security". Core Security.
  61. "Myths about indentation in Python". Secnetix.de. Retrieved 19 April 2011.
  62. Guttag, John V. (2016-08-12). Introduction to Computation and Programming Using Python: With Application to Understanding Data. MIT Press. ISBN 978-0-262-52962-4.
  63. "Built-in Types". Retrieved 3 October 2019.
  64. van Rossum, Guido (5 June 2001). "PEP 7 – Style Guide for C Code". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008.
  65. "CPython byte code". Docs.python.org. Retrieved 16 February 2016.
  66. "Python 2.5 internals" (PDF). Retrieved 19 April 2011.
  67. "An Interview with Guido van Rossum". Oreilly.com. Retrieved 24 November 2008.
  68. "PyPy compatibility". Pypy.org. Retrieved 3 December 2012.
  69. "speed comparison between CPython and Pypy". Speed.pypy.org. Retrieved 3 December 2012.
  70. Shaw, Anthony (2018-03-30). "Which is the fastest version of Python?". Hacker Noon. Retrieved 2019-12-20.
  71. "Application-level Stackless features — PyPy 2.0.2 documentation". Doc.pypy.org. Retrieved 17 July 2013.
  72. "Python on the Nokia N900". Stochastic Geometry. 2010-04-29.
  73. Piotrowski, Przemyslaw (July 2006). "Build a Rapid Web Development Environment for Python Server Pages and Oracle". Oracle Technology Network. Oracle. Retrieved 12 March 2012.
  74. «GUI Programming in Python». The Python Wiki. ۲۰۱۰-۱۰-۱۰. دریافت‌شده در ۵ فروردین ۱۳۹۰.
  75. «Graphic User Interface FAQ». Python Software Foundation. مارس ۱۳, ۲۰۱۰. بایگانی‌شده از اصلی در ۶ اوت ۲۰۱۱. دریافت‌شده در ۵ فروردین ۱۳۹۰.

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

در پروژه‌های خواهر می‌توانید در مورد پایتون (زبان برنامه‌نویسی) اطلاعات بیشتری بیابید.


  در میان کتاب‌ها از ویکی‌کتاب
  در میان تصویرها و رسانه‌ها از ویکی‌انبار