پایتون (به انگلیسی: Python) یک زبان برنامه‌نویسی همه منظوره، همگردان/مُفَسّر، سطح بالا، شیءگرا، اِسکریپتی و متن باز است که توسط خودو فان راسام (به هلندی: Guido van Rossum) در سال ۱۹۹۱ در کشور هلند طراحی شد.

تاریخچه

مخترع زبان پایتون خودو فان روسوم
پایتون اواخر دهه ۱۹۸۰ (میلادی) توسط خودو فان روسوم در مؤسسه ملی تحقیقات ریاضی و رایانه (CWI) در کشور هلند ایجاد شد. هدف خَودو ایجاد جانشینی برای زبان برنامه‌نویسی ای‌بی‌سی بودکه قابلیت پردازش استثناها را داشته باشد. خَودو طراح اصلی پایتون است و نقش مداوم او در تصمیم‌گیری پیرامون اهداف پایتون، باعث شد که انجمن پایتون به او لقب دیکتاتور خیرخواه جاویدان (به انگلیسی: Benevolent Dictator For Life) را بدهد.

نسخه‌های اولیه
در سال ۱۹۹۱ فان روسوم کدی با برچسب نسخه ۰٫۹٫۰ را منتشر کرد. البته در این مرحله از پیشرفت کلاس‌هایی با خاصیت ارث بری، پردازش استثنا، توابع و انواع داده 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.

پایتون ۳

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

 

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

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

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

تغییر پرینت چون یک تابع غیرقابل انتقال است نه یک توضیح. این باعث می‌شود که تغییر یک ماژول برای استفاده از یک تابع پرینت متفاوت، آسان باشد و بنابراین ایجاد نحو منظم تر می‌شود. در پایتون ۲٫۶ این امکان با تایپ کردن from – future – import print – function فراهم شد.
اضافه شدن حمایت از یادآوری تابع انتخابی که می‌تواند برای معرفی تایپ خصوصی یا اهداف دیگر استفاده شود.
یکسان کردن تایپ str/Unicode، به نمایندگی از یک متن، و معرفی یک تایپ byte تغییرناپذیر؛ با یک تایپ مطابق با bytearray تغییرپذیر، که هر دو آرایه از بایت را ارائه می‌کنند.
از بین بردن خصوصیات سازگاری معکوس، شامل کلاس‌های به فرم قبل، قسمت کردن اعداد صحیح، استثناءهای رشته‌ای، و گزارش‌های نسبتاً نا آشکار.