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

پایتون (به انگلیسی: Python، US: /ˈpθɑːn/) یک زبان برنامه‌نویسی شیءگرا، تفسیری، سطح بالا، و همه منظوره است، که خیدو فان روسوم[lower-alpha 1] آن را طراحی کرده‌است، و اولین بار در سال ۱۹۹۱ منتشر شده‌است. فلسفه اصلی طراحی پایتون «خوانایی بالای کد» است و نویسه‌های فاصله خالی در آن معنادار هستند و مکرر استفاده می‌شوند. ساختار زبانی و دیدگاه شیءگرا در پایتون به گونه‌ای طراحی شده‌است که به برنامه‌نویس امکان نوشتن کد منطقی و واضح (بدون ابهام) را برای پروژه‌های کوچک و بزرگ می‌دهد.[26]

پایتون
الگو برنامه‌نویسیچند الگویی: تابعی، دستوری، شی‌گرا، پژواکی
طراحی شده توسطخیدو فان روسوم
توسعه‌دهندهبنیاد نرم‌افزاری پایتون
ظهوریافته در۲۰ فوریه ۱۹۹۱ (۱۹۹۱-۰۲-20)
انتشار پایدار
3.9.5[1] 
۳ مه ۲۰۲۱ (۳ مه ۲۰۲۱)
انتشار آزمایشی
3.10.0b1[1] 
۳ مه ۲۰۲۱ (۳ مه ۲۰۲۱)
اردکی، پویا، تدریجی (از پایتون(3.5))[2]
بن‌سازه رایانشچندسکویی
پروانهپروانهٔ بنیاد نرم افزار پایتون
قبل از ویرایش 3.5: .py, .pyc, .pyd, .pyo ,[3]
از ویرایش 3.5:.pyw, .pyz[4]
وبگاه
پیاده‌سازی‌های بزرگ
سی‌پایتون، آیرون پایتون, جایتون، میکرو پایتون, نامبا, پای‌پای، پایتون بدون پشته
گویش
آر پایتون، سایتون[5]
متأثر از
تأثیر گذاشته بر

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

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

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

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

    این زبان از زبان‌های برنامه‌نویسی مفسر بوده و به صورت کامل یک زبان شیءگرا است که در ویژگی‌ها با زبان‌های تفسیری پرل، روبی، اسکیم، اسمال‌تاک و تی‌سی‌ال مشابهت دارد و از مدیریت خودکار حافظه استفاده می‌کند.[27][28][29]

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

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

    تاریخچه

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

    پایتون اواخر دهه ۱۹۸۰ (میلادی)[34] در مؤسسه ملی تحقیقات ریاضی و رایانه[lower-alpha 2] (CWI) در کشور هلند توسعه داده شد.

    هدف خیدو از توسعهٔ پایتون ایجاد جانشینی برای زبان برنامه‌نویسی ای‌بی‌سی بود[35] که قابلیت پردازش استثناها را داشته باشد.[36]پیاده‌سازی پایتون در دسامبر ۱۹۸۹ آغاز شد.[37] خیدو طراح اصلی پایتون است و نقش مداوم او در تصمیم‌گیری پیرامون اهداف پایتون، باعث شد که انجمن پایتون به او لقب دیکتاتور خیرخواه جاویدان[lower-alpha 3] را بدهد.[38] فان روسوم تا ۱۲ ژوئیه ۲۰۱۸ مسئولیت رهبری پروژهٔ پایتون را به عهده داشت. در آن زمان او اعلام کرد که از مسئولیت خود به عنوان دیکتاتور خیرخواه جاویدان کناره‌می‌گیرد.[39] در حال حاضر، او مسئولیت رهبری پروژهٔ پایتون را به یک انجمن راهبری[lower-alpha 4] پنج عضوی که خود نیز یکی از اعضای آن است داده‌است.[40][41][42]در ژانویهٔ ۲۰۱۹ توسعه دهندگان فعال هستهٔ پایتون نیک کولان،[lower-alpha 5] برت کانون،[lower-alpha 6] بری وارساو،[lower-alpha 7] کارول ویلینگ،[lower-alpha 8] و خیدو فان رو سوم را به عنوان اعضای انجمن انتخاب کردند.[43]از آن زمان خیدو فان روسوم از نامزدی برای انجمن ۲۰۲۰ صرف نظر کرده‌است.[44]

    پایتون ۲٫۰ در ۱۶ اکتبر ۲۰۰۰ با ویژگی‌های مهم و جدید بسیاری منتشر شدکه شامل بازیافت حافظه با قابلیت شناسایی دور[lower-alpha 9] و پشتیبانی از یونیکد بود.[45]

    پایتون ۳٫۰ در ۳ دسامبر ۲۰۰۸ منتشر شد این نسخه بازنویسی عمده‌ای از نسخهٔ قبل بود که سازگاری عقبرو[lower-alpha 10] را شکسته بود.[46]بسیاری از ویژگی‌های عمدهٔ آن به پایتون 2.6.x[47] و 2.7.x پیش‌انتقال داده شدند. نسخه‌های منتشر شده از پایتون ۳ ابزار 2to3 را دارند که کار ترجمهٔ کد پایتون ۲ به پایتون ۳ را (حداقل تا حدودی) انجام می‌دهد.[48]

    از سال ۲۰۱۵ مقرر شد نسخه‌های پایتون ۲٫۷ تنها تا سال ۲۰۲۰ پشتیبانی شوند.[49][50]

    خصوصیات

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

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

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

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

    پایتون یک زبان برنامه‌نویسی چند پارادایمی است به طوریکه هم شیء گرایی[lower-alpha 11] و برنامه‌نویسی ساخت‌یافته[lower-alpha 12] را کاملاً پوشش می‌دهد و هم بسیاری از خصوصیات پایتون برنامه‌نویسی جنبه گرا و تابعی (مثل پشتیبانی از فرا برنامه‌نویسی[lower-alpha 13])[51] را پوشش می‌دهد.[52] پارادایم‌های برنامه‌نویسی دیگر نیز به وسیلهٔ افزونه‌ها پشتیبانی شده‌اند. مثل برنامه‌نویسی منطقی.[53]

    پایتون از تایپ پویا و ترکیبی از شمارش مرجع و یک حلقه کشف و بازیافت قسمت‌های هدر رفته حافظه برای مدیریت حافظه، استفاده می‌کند.[54] یک ویژگی مهم پایتون تحلیل نام پویا است که روش‌ها و نام متغیرها را در طول اجرای برنامه به هم ملحق می‌کند.

    طرح پایتون به پشتیبانی محدود برای برنامه‌نویسی تابعی به سُنَت زبان لیسپ، ارائه شد. به همین منظور پایتون دارای توابع filter, map, و reduce و عبارت‌های لیست، دیکشنری، مجموعه و جنراتور است.[55] اگرچه، تشابه‌های عمده‌ای بین پایتون و زبان خانواده لیسپ وجود دارد. این کتابخانه دو ماژول دارد (ایترتولز[lower-alpha 14] و فانکتولز[lower-alpha 15]) که ابزارهای تابعی را با اقتباس از هسکل و استاندارد ام‌ال پیاده‌سازی می‌کند.[56]

    فلسفهٔ اصلی پایتون در سند ذن پایتون پی‌ئی‌پی ۲۰ خلاصه شده‌است که شامل گزینه‌های زیر است:[57]

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

    یکی از اهداف پایتون داشتن نحو ساده‌تر و منظم‌تر است؛ به همین دلیل برای روش‌شناسی کد فقط یک انتخاب در مقابل توسعه‌دهنده قرار می‌دهد. روش پایتون در مقابل روش پرل (بیش از یک روش برای انجام آن وجود دارد) قرار دارد و فلسفهٔ طراحی آن چنین است «باید یک راه – و ترجیحاً فقط یک راه - آشکار برای انجام هر کاری وجود داشته باشد.».[57] الکس مارتلی[lower-alpha 16] که نویسندهٔ کتاب‌های مربوط به پایتون است. می‌نویسد: «در فرهنگ پایتون «هوشمندانه» توصیف کردن چیزی ستایش به‌شمار نمی‌رود[58]

    هدف دیگر طراحی زبان آسان کردن توسعه‌پذیری است. ماژول‌هایی که تازه ساخته شده‌اند، به‌سادگی در C و C++ نوشته می‌شوند. پایتون همچنین می‌تواند به عنوان زبان توسعه برای ماژول‌ها و کاربردهای موجود که به برنامه واسط قابل برنامه‌ریزی نیاز دارد، استفاده شود. توسعه دهندگان پایتون سعی کردند از بهینه‌سازی زود هنگام اجتناب کنند و وصله‌های غیر حساس سی‌پایتون که باعث افزایش سرعت نهایی می‌شد را اضافه نکردند.[59] هرگاه برای برنامه‌نویس پایتون سرعت اهمیت داشت، او می‌تواند توابع زمانبر را به ماژول‌های افزونه‌ای ببرد و آن‌ها را به زبان‌هایی مثل سی بنویسد یا از پای‌پای استفاده کند که نوعی کامپایلر درجا است. از سایتون که اسکریپت پایتون را به سی ترجمه می‌کند نیز می‌توان استفاده کرد.

    به کاربران و علاقه‌مندان پایتون مخصوصاً آنان که باتجربه و آگاه به حساب می‌آیند پایتونیستا[lower-alpha 17] گفته می‌شود.[60][61]

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

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

    یک واژه ابداعی رایج در انجمن پایتون، واژهٔ پایتونیک[lower-alpha 18] است که محدوده معنایی وسیعی را در رابطه با سبک برنامه‌نویسی در بر می‌گیرد. کدی پایتونیک است که از اصطلاحات پایتون به خوبی استفاده کرده باشد به طوری که شیوایی در زبان را نشان دهد و مطابق فلسفهٔ مینیمالیستی و خوانایی بالا در پایتون باشد. در مقابل کد آنپایتونیک[lower-alpha 19] کدی است که فهم آن مشکل است یا مثل رونویسی‌ای از زبان دیگری باشد.

    نام گذاری

    نام پایتون از گروه کمدین بریتانیایی مانتی پایتون که سازندهٔ پایتون، خیدو فان روسوم، به آن علاقه‌مند بود، گرفته شده‌است. اشاره به مانتی پایتان در فرهنگ پایتون و کدهای آن به وفور دیده می‌شود؛[62]برای مثال در پایتون spam and eggs، به جای فوبار به عنوان متغیرهای فرانحوی به کار می‌رود.[62][63]در مستندسازی رسمی پایتون نیز به روال‌های مانتی پایتون اشاره می‌شود.[64][65]

    دستور زبان

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

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

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

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

    حکم‌ها و روند کنترل

    حکم‌های پایتون شامل:

    • حکم نسبت‌دهی (توکن '=' , علامت مساوی). که متفاوت با نسبت‌دهی در برنامه‌نویسی دستوری دیگر عمل می‌کند. این سازوکار اولیه، عملکرد بسیاری از ویژگی‌های دیگر را آشکار می‌سازد.
    • حکم 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، بر خلاف دیگر حکم‌ها بلوک خود را فوراً اجرا نمی‌کند.

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

    عبارت‌ها

    • از پایتون ۳٫۵ عملگر میانوندی @ اضافه شد. هدف از اضافه کردن آن استفاده به عنوان عملگر ضرب ماتریسی توسط کتابخانه‌هایی مثل نام‌پای بوده‌است.[69][70]
    • از پایتون ۳٫۸ نحو :=، که با نام عملگر والروس[lower-alpha 20] شناخته می‌شود، توصیف شد؛ که مقادیر را به متغییرها تخصیص می‌دهد.[71]
    • در پایتون == مقدار را مقایسه می‌کند در مقابل جاوا که برای اعداد مقدار را مقایسه می‌کند[72] ولی برای اشیاء مرجع را مقایسه می‌کند.[73] در پایتون می‌توان مقایسه را به صورت زنجیره ای انجام داد: مثلاً به صورت مقابل a <= b <= c.
    • در پایتون از لغات and, or, not برای عملگر دودویی استفاده می‌شود به جای استفاده از نمادهای &&, ||, ! که در جاوا و سی کاربرد دارند.
    • پایتون نوعی عبارت به نام خلاصه لیست list comprehension دارد که از پایتون ۲٫۴ به عبارت عمومی‌تری به نام جنراتور گسترش یافت.[55]
    • توابع بی‌نام که با به کار بردن عبارت‌های لاندا اجرا می‌شوند. با این وجود محدودیت دارد و تنها یک عبارت می‌تواند باشد.
    • عبارت‌های شرطی که به صورت x if c else y نوشته می‌شوند.[74] (که ترتیب عملوندهای آن با c ? x : y که در بسیاری از زبان‌های دیگر مرسوم است متفاوت است)
    • پایتون بین لیست و تاپل تمایز قائل می‌شود. لیست‌ها به صورت [1, 2, 3] نوشته می‌شوند و تغییرپذیر هستند؛ به همین دلیل نمی‌تواند به عنوان کلید دیکشنری استفاده شود. (کلیدهای دیکشنری باید تغییرناپذیر باشند) تاپل‌ها به صورت (1, 2, 3) نوشته می‌شوند، تغییرناپذیر هستند، تمام اعضای آن نیز باید تغییرناپذیر باشند و می‌تواند به عنوان کلید دیکشنری استفاده شوند. عملگر + می‌تواند برای به هم چسباندن دو تاپل استفاده شود.

    متدها

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

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

    نوع دهی

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

    پایتون به برنامه نویسان اجازه می‌دهد با استفاده از کلاس، نوع‌های دلخواه خودشان را تعریف کنند. نمونه‌های جدید هر کلاس با فراخوانی آن کلاس ساخته می‌شوند؛ مثلاً SpamClass() یا EggsClass() و خود کلاس‌ها نمونه‌هایی از متاکلاس type هستند.

    پایتون قبل از نسخهٔ ۳٫۰ دو نوع کلاس داشت یکی شیوهٔ قدیم old-style و دیگری شیوهٔ جدید new-style.[76] نحو هر دو مشابه است تفاوت در این است که کلاس object مستقیماً به ارث برسد یا نه. تمام کلاس‌های شیوهٔ جدید object را به ارث می‌برند و نمونه‌ای از type هستند)

    کلاس‌های پایتون
    تایپ تغییرپذیری توصیف مثال نحو
    ellipsis تغییرناپذیر ایندکس در آرایه نام‌پای ...
    Ellipsis
    NoneType تغییرناپذیر یک شیء که نشان دهندهٔ وجود نداشتن مقدار است و در زبان‌های دیگر با نام null شناخته می‌شود (اشاره‌گر هیچ‌مقدار) None
    NotImplementedType تغییرناپذیر یک مکان نگهدارنده که می‌تواند از طریق اپراتورهای دارای بار اضافی برگردانده شود تا انواع عمل پشتیبانی نشده را نشان دهد. NotImplemented
    bool تغییرناپذیر فقط می‌تواند دو مقدار به خود بگیرد: درست(True) یا نادرست(False) True
    False
    عدد[lower-alpha 21]
    int تغییرناپذیر عدد صحیح 42
    long تغییرناپذیر وقتی ذخیره کردن یک عدد صحیح سر ریز داشته باشد، با دقتی نامحدود Long بسط خواهد یافت (تنها در پایتون ۲) 3457876312345678632235674225567773487L
    float تغییرناپذیر عدد اعشاری 3.1415927
    complex تغییرناپذیر عدد مختلط با عدد حقیقی و قسمت موهومی 3+2.7j
    دنباله[lower-alpha 22]
    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)
    مجموعه[lower-alpha 23]
    frozenset تغییرناپذیر مجموعه (مجموعه از اشیاء که بدون ترتیب تکرار هستند) در صورت هشبل بودن می‌تواند انواع مختلفی از اشیاء را همزمان بپذیرد. frozenset([4.0, 'string', True])
    set تغییرپذیر مثل frozenset منتها تغییرپذیر {4.0 ,'string', True}
    نگاشت[lower-alpha 24]
    dict تغییرپذیر گروهی از جفت‌های کلید و مقدار {'key1': 1.0, 3: False}
    نوع‌های قابل فراخوانی[lower-alpha 25]
    range تغییرناپذیر دنباله‌ای از اعداد است که معمولاً از آن برای حلقه با تعداد مشخصی از تکرار استفاده می‌شود[77] 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> قرار می‌دهیم. (کد فایل را لازم نیست وارد کنید)

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

    برنامه سلام دنیا

    برنامهٔ برنامه «سلام، دنیا!» زیر، با استفاده از کتابخانه استاندارد و جریان‌های خروجی یک متن را به خروجی استاندارد ارسال می‌نماید

    print('Hello, world!')
    

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

    n = int(input('Type a number, and its factorial will be printed: '))
    
    if n < 0:
        raise ValueError('You must enter a non negative integer')
    
    fact = 1
    
    for i in range(2, n + 1):
        fact *= i
    
    print(fact)
    

    پیاده‌سازی

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

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

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

    جایتون[lower-alpha 26] برنامه‌های پایتون را به کد بایت جاوا کامپایل می‌کند که بدین ترتیب می‌تواند با هر ماشین مجازی جاوا اجرا شود همچنین این امکان فراهم می‌شود که توابع کتابخانه‌ای کلاس جاوا از برنامه پایتون به کار گرفته شود. آیرون پایتون از همین شیوه برای اجرای برنامه‌های پایتون روی چارچوب دات‌نت استفاده می‌کند.

    پای پای[lower-alpha 27] یک مفسر سریع پایتون ۲٫۷ و ۳٫۶ است.[82] پای‌پای نوعی کامپایلر درجاست که باعث بیشتر شدن سرعت نسبت به سی‌پایتون می‌شود ولی در عوض از بسیاری از کتابخانه‌ها که به زبان سی نوشته شده‌اند نمی‌توان با آن استفاده کرد.[83][84]

    پایتون بدون پشته[lower-alpha 28] ، انشعابی از سی پایتون است که ریز برنامه‌ها را اجرا می‌کند و از پشته حافظه استفاده نمی‌کند. سی پایتون از قفل مفسر سراسری استفاده می‌کند تا وقتی برنامه پایتون بدون پشته، وابسته به سیستم عامل است و می‌تواند به صورت هم‌زمان اجرا شود، در هر لحظه فقط به یک زیر برنامه اجازه اجرا داده شود. پایتون برای استفاده در میکرو کنترلرها یا وظایف محدود دیگر پایگاه‌های مرجع، متناسب‌تر است. پیش‌بینی می‌شود که پایتون بدون پشته بتواند تقریباً روی همان پایگاهی که سی پایتون اجرا می‌شود، اجرا شود. پای‌پای نیز یک ورژن بدون پشته دارد.[85]

    میکرو پایتون[lower-alpha 29] و سیرکیوت پایتون[lower-alpha 30] پیاده‌سازی پایتون ۳ای هستند که برای ریزکنترل‌گر‌ها بهینه شده‌اند.[86]

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

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

    کامپایلرهای درجای دیگری که هم‌اکنون پشتیبانی نمی‌شوند:

    • سایکو[lower-alpha 31] یک کامپایل درجا بود که در زمان اجرا بایت کد را به کد ماشین، تبدیل می‌کرد. کد تولید شده، به نوع داده معینی اختصاص داده می‌شد و از کدهای استاندارد پایتون سریع‌تر بود.
    • در سال ۲۰۰۹ گوگل پروژه ای را با نام Unladen Swallow آغاز کرد. هدف این پروژه سرعت بخشیدن به مفسر پایتون با استفاده از ال‌ال‌وی‌ام و بهبود قابلیت چندریسگی بود.[87]

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

    کامپایلرهای تقابلی به زبان‌های دیگر

    چندین کامپایلر به زبان‌های سطح بالای شیء گرا وجود دارد خواه زبان مبدأ پایتون محدود نشده باشد خواه زیر مجموعه‌های محدود شدهٔ آن یا زبان‌های مشابه پایتون باشند:

    توسعه

    توسعهٔ پایتون از طریق پی‌ئی‌پی PEP به معنای پروپوزال بهینه‌سازی پایتون انجام می‌شود که سازوکار اولیه برای مطرح کردن ویژگی‌های عمدهٔ جدید و جمع‌آوری ورودی جامعهٔ پایتون دربارهٔ مشکلات و مستندسازی طرح تصمیم‌گیری‌های پایتون است؛[94] برای نمونه سبک برنامه‌نویسی پایتون در پی‌ئی‌پی ۸ توضیح داده شده‌است.[95] جامعهٔ پایتون و شورای مدیریتی پی‌ئی‌پی‌ها را بررسی می‌کنند.[94] توسعهٔ این زبان متناظر با توسعهٔ پیاده‌سازی مرجع (سی‌پایتون) است. میلینگ لیست python-dev انجمن اولیه برای توسعهٔ این زبان است. مشکلات نرم‌افزاری آن در سایت ردیابی باگ روندآپ که در bugs.python.org میزبانی می‌شود مورد بحث قرار می‌گیرند.[96]

    تا سال ۲۰۱۷ توسعهٔ آن در مخزن نرم‌افزاری ای خود میزبان انجام می‌شد که از مرکوریال استفاده می‌کرد ولی از ژانویهٔ سال ۲۰۱۷ کد منبع پایتون به گیت‌هاب منتقل شد.[97]

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

    • انتشارهای ناسازگار عقبرو که در آن‌ها اولین بخش شمارهٔ ورژن افزایش می‌یابد. این نسخه‌ها به صورت نامتناوب منتشر می‌شوند؛ مثلاً نسخهٔ ۳٫۰ هشت سال بعد از نسخهٔ ۲٫۰ منتشر شد.
    • انتشارهای عمده یا ویژگی که حدود هر ۱۸ ماه یک‌بار منتشر می‌شوند. البته انتظار می‌رود با انتشار پایتون ۳٫۹ این مدت زمان به یک سال برسد.[98][99] این انتشارها با نسخه‌های قبلی سازگارند ولی ویژگی‌های جدید نیز دارند. در انتشارها قسمت دوم شمارهٔ نسخه افزایش می‌یابد هر نسخهٔ عمده چندین سال بعد از انتشار از نظر رفع اشکالات نرم‌افزاری پشتیبانی می‌شود.[100]
    • انتشارهای رفع اشکال [101] که ویژگی جدیدی ندارند و حدوداً هر سه ماه منتشر می‌شوند وقتی که اشکالات نرم‌افزاری به تعداد کافی از آخرین انتشار رفع شدند آسیب‌پذیری‌های امنیتی نیز در این انتشارها وصله می‌شوند؛ سومین و آخرین قسمت شمارهٔ نسخه افزایش می‌یابد.[101]

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

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

    کتابخانهٔ استاندارد با تعداد زیاد فرمت‌ها و پروتکل‌هایی که حمایت می‌کند (مانند ام‌آی‌ام‌ئی و اچ‌تی‌تی‌پی)، خصوصاً برای نوشتن علائم اینترنت مناسب است. پایتون همچنین ماژول‌هایی برای ایجاد واسط کاربر گرافیکی، اتصال به پایگاه داده رابطه‌ای، تولید اعداد شبه تصادفی، محاسبات با دقت دلخواه اعشاری،[103] دستکاری عبارات با قاعده و آزمایش واحد دارد. بعضی از قسمت‌های کتابخانهٔ استاندارد در سند مشخصات توضیح داده شده‌اند. (مثل WSGI wsgiref که پیرو PEP 333 است[104]) اما اکثریت ماژول‌ها این‌گونه نیستند. آن‌ها از طریق کدها، اسناد داخلی، و دنباله تست شان (اگر موجود باشد) تعیین می‌شوند. اگر چه، به دلیل اینکه کد پایتون اکثر کتابخانه‌های استاندارد، چندسکویی است، فقط ماژول‌های اندکی هستند که باید برای پیاده‌سازی‌های دیگر تغییر داده شوند یا مجدّداً نوشته شوند. در نوامبر 2019 (PyPI) مخزن رسمی برای نرم‌افزارهای شخص سوم پایتون بالغ بر ۲۰۰۰۰۰ پکیج دارد.[105] پکیج‌های پایتون در زمینه‌های گوناگونی کاربرد دارند:

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

    تصویری از محیط آی‌دی‌ال‌ئی ویرایشگر کد پیشفرض پایتون در اوبونتو

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

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

    واسط گرافیکی

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

    • تیکینتر (به صورت پیش‌فرض همراه با نسخه‌های استاندارد پایتون ارائه می‌شود و یک رابط شیءگرا برای ابزار Tcl/Tk در محیط پایتون فراهم می‌کند)
    • پای‌کیوت
    • پای‌جی‌تی‌کی
    • وکس پایتون
    • اف‌ال‌تی‌کی پای
    • اف‌ایکس پای
    • پای‌اوپن‌جی‌ال

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

    import tkinter as tk
    
    fenster = tk.Tk()
    fenster.geometry("200x100")
    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(0)
    reset()
    turtle.x = -200
    turtle.y = 200
    
    while turtle.y != -200:
        goto(turtle.x, turtle.y)
        turtle.x = - turtle.x
        turtle.y = - turtle.y
        goto(turtle.x, turtle.y)
        goto(0, 0)
        turtle.y = - turtle.y
        turtle.x = - turtle.x
        turtle.y -= 5
    
    نتیجهٔ کد بالا

    تصاویر کشیده شده با ترتل

    کاربرد

    از سال ۲۰۰۳ پایتون طبق شاخص تیوبی یکی از ده زبان محبوب برنامه‌نویسی بوده‌است و در فوریهٔ ۲۰۲۰ سومین زبان برنامه‌نویسی محبوب (بعد از c و جاوا) بوده‌است.[109]پایتون در سال‌های ۲۰۰۷ ،۲۰۱۰ و ۲۰۱۸ به عنوان زبان برنامه‌نویسی سال انتخاب شده‌است.[110]

    سازمان‌های بزرگی مثل گوگل،[111] یاهو،[112] سرن،[113] فیسبوک،[114] ناسا[115] از پایتون استفاده می‌کنند. ITA[116] نیز از پایتون برای بعضی از اجزای خود استفاده می‌کند. همچنین شبکهٔ اجتماعی ردیت نیز به‌طور کامل در پایتون نوشته شده‌است.[117]

    پایتون به عنوان یک زبان اسکریپت نویسی می‌تواند در اپلیکیشن‌های وب استفاده شود مثلاً استفاده از mod_wsgi برای وب سرور آپاچی.[118] چارچوب‌های نرم‌افزاری تحت وب مثل جنگو،[lower-alpha 39] پایلونز،[lower-alpha 40] توربوگیرز،[lower-alpha 41] تورنادو،[lower-alpha 42] فلسک،[lower-alpha 43] باتل،[lower-alpha 44] زوپ[lower-alpha 45] به توسعه دهندگان در نگهداری و طراحی اپلیکیشن‌های پیچیده کمک می‌کنند. Pyjs و آیرون پایتون[lower-alpha 46] می‌توانند برای توسعهٔ اپلیکیشن‌های ایجکس پایهٔ[lower-alpha 47] سمت کلاینت استفاده شوند. از اس‌کیوال الکمی[lower-alpha 48] می‌توان در نگاشت داده‌ها بر پایگاه دادهٔ رابطه‌ای استفاده شود. تویستد[lower-alpha 49] یک فرم ورک برای برنامه‌نویسی ارتباط بین کامپیوترها است مثلاً دراپ باکس از آن استفاده می‌کند.

    کتابخانه‌هایی مثل نام‌پای،[lower-alpha 50] سای‌پای[lower-alpha 51] و مت‌پلات[lower-alpha 52]امکان استفادهٔ اثر بخش از پایتون در محاسبهٔ علمی را فراهم می‌آورد[119][120] همچنین کتابخانه‌های تخصصی بایوپایتون[lower-alpha 53] و آستروپای[lower-alpha 54] که در حوزهٔ خاصی کارایی دارند. نرم‌افزار ریاضی سیج مث[lower-alpha 55] که دارای یک رابط کاربری دفترچه ای[lower-alpha 56] به زبان پایتون است: کتابخانهٔ این نرم‌افزار بسیاری از مباحث ریاضی را پوشش می‌دهد. مثل جبر، ترکیبیات، محاسبات عددی، نظریهٔ اعداد و حسابان.[121]

    پایتون در نرم‌افزارهای بسیاری به عنوان زبان اسکریپت نویسی استفاده می‌شود نرم‌افزارهایی مثل آباکوس که از روش اجزاء محدود استفاده می‌کند، فری‌کد که اجسام سه بعدی پارامتری را مدل‌سازی می‌کند. بسته‌های انیمیشن سه بعدی مثل تری دی مکس[lower-alpha 57] , بلندر[lower-alpha 58] , سینما ۴بعدی، لایت‌ویو، هودینی، مایا، مودو[lower-alpha 59] , موشن بیلدر، سافت‌ایمیج، نرم‌افزار ایجاد جلوه‌های ویژه مثل نیوک[lower-alpha 60] , برنامهٔ دستکاری تصاویر دو بعدی مثل گیمپ[lower-alpha 61][122] اینک‌اسکیپ، اسکربس و پینت شاپ پرو، [123] نرم‌افزارهای نت نویسی مثل اسکور رایتر[lower-alpha 62] و کپلا.[lower-alpha 63] گنو دیباگر از پایتون برای پرینت زیبا[lower-alpha 64] استفاده می‌کند تا ساختارهای پیچیده مثل C++ کانتینر را نشان دهد. شرکت ازری[lower-alpha 65] هم‌اکنون در حال ترقی دادن پایتون به عنوان بهترین انتخاب برای نوشتن فایل آغازگر در آرک جی‌آی‌اس[lower-alpha 66] است.[124] همچنین از پایتون در بازی‌های ویدئویی استفاده می‌شود.[125][126] همچنین پایتون به عنوان اولین زبان از سه زبان گوگل اپ انجین پذیرفته شده‌است دو زبان دیگر زبان‌های جاوا و گو هستند.[127]

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

    پایتون در پروژه‌های هوش مصنوعی و یادگیری ماشینی استفاده می‌شود کتابخانه‌هایی که در این کار استفاده می‌شوند کتابخانه‌هایی مثل تنسورفلو، کرس، پای‌تورچ و سایکیت-لرن[lower-alpha 67] هستند.[130][131][132] پایتون به عنوان زبان اسکریپت نویسی با معماری ماژولار و نحو ساده و ابزار پردازش متن قوی برای پردازش زبان‌های طبیعی استفاده می‌شود.[133]

    مقبولیت

    پایتون در بسیاری از سیستم عامل‌ها به عنوان جزء استاندارد وجود دارد. پایتون در سیستم عامل‌های توزیع لینوکس،[134] آمیگااواس ۴، فری بی‌اس‌دی، نت‌بی‌اس‌دی، اوپن‌بی‌اس‌دی و مک‌اواس می‌تواند از طریق خط فرمان (ترمینال) استفاده شود. ردهت لینوکس و فدورا هر دو از نصاب پایتونی آناکوندا استفاده می‌کنند. لینوکس جنتو از پایتون در سیستم مدیریت بسته، یعنی پورتج[lower-alpha 68] استفاده می‌کند. پاردوس از آن برای مدیریت و در طول راه‌اندازی سیستم استفاده می‌کند.

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

    زبان‌های متأثر از پایتون

    طراحی و فلسفهٔ پایتون بر زبان‌های زیادی تأثیر گذاشته‌است:

    • زبان بو از تورفتگی استفاده می‌کند همچنین سینتکس و مدل شیءگرایی آن مشابه پایتون است.[135]
    • کبرا از تورفتگی و نحو مشابه استفاده می‌کند و در سند سپاسگزاری اش پایتون را به عنوان مورد اول در فهرست زبان‌هایی که از آن تأثیر پذیرفته‌است معرفی می‌کند.[136]
    • نحو کافی اسکریپت زبانی که کامپایل تقابلی به جاوا اسکریپت می‌کند، از پایتون الهام گرفته شده‌است.
    • گو نیز با هدف سرعت کار زبان برنامه‌نویسی‌ای پویا همچون پایتون نوشته شده‌است.[137] و نحو آن در جدا کردن آرایه‌ها مشابه پایتون است.
    • گرووی با هدف آوردن فلسفهٔ طراحی پایتون به جاوا توسعه داده شد.[138]
    • هدف از طراحی جولیا این است که مثل پایتون باشد در برنامه‌نویسی عمومی قابل استفاده باشد.[22]
    • زبان برنامه‌نویسی نیم از تورفتگی استفاده می‌کند و همچنین نحوی مشابه با پایتون دارد.[139]
    • سازندهٔ روبی ، یوکیهیرو ماتسوموتو گفته‌است «من زبان برنامه‌نویسی ای می‌خواهم که از پرل قدرتمند تر و از پایتون شیء گرا تر باشد و به همین دلیل است که تصمیم گرفتم زبان خودم را طراحی کنم.»[140]
    • سوئیفت زبان برنامه‌نویسی ای که اپل آن را توسعه داده‌است نیز نحوی الهام گرفته شده از پایتون را دارد.[141]

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

    واژه‌نامه

    1. Guido van Rossum
    2. Centrum Wiskunde & Informatica
    3. Benevolent dictator for life
    4. steering council
    5. Nick Coghlan
    6. Brett Cannon
    7. Barry Warsaw
    8. Carol Willing
    9. cycle-detecting garbage collector
    10. backward compatibility
    11. Object-oriented programming
    12. Structured programming
    13. Metaprogramming
    14. itertools
    15. functools
    16. Alex Martelli
    17. Pythonista
    18. pythonic
    19. unpythonic
    20. Walrus Operator
    21. number
    22. Sequence
    23. set
    24. mapping
    25. Callable types
    26. Jython
    27. PyPy
    28. Stackless Python
    29. MicroPython
    30. CircuitPython
    31. Psyco
    32. Grumpy
    33. MyHDL
    34. Nuitka
    35. Numba
    36. Pyrex
    37. Shed Skin
    38. Pythran
    39. Django
    40. Pylons
    41. TurboGears
    42. Tornado
    43. Flask
    44. Bottle
    45. Zope
    46. IronPython
    47. Ajax-based
    48. SQLAlchemy
    49. Twisted
    50. NumPy
    51. SciPy
    52. Matplotlib
    53. Biopython
    54. Astropy
    55. SageMath
    56. Notebook interface
    57. 3ds Max
    58. Blender
    59. Modo
    60. Nuke
    61. GIMP
    62. scorewriter
    63. capella
    64. pretty printer
    65. ESRI
    66. ArcGIS
    67. Scikit-learn
    68. Portage
    69. Instagram
    70. BitTorrent
    71. Chandler
    72. Mailman
    73. Kombilo
    74. MoinMoin
    75. Plone
    76. Portage
    77. zope
    78. SPE
    79. wxGlade
    80. Yum
    81. Abaqus

    منابع

    1. "Python 3.8.10, 3.9.5, and 3.10.0b1 are now available" (به زبان انگلیسی). 3 May 2021. Retrieved 4 May 2021.
    2. "PEP 483 -- The Theory of Type Hints". Python.org.
    3. File extension .pyo was removed in Python 3.5. See PEP 0488
    4. Holth, Moore (30 March 2014). "PEP 0441 -- Improving Python ZIP Application Support". Retrieved 12 November 2015.
    5. "Starlark Language". Retrieved 25 May 2019.
    6. "Why was Python created in the first place?". General Python FAQ. Python Software Foundation. Retrieved 22 March 2007.
    7. "Ada 83 Reference Manual (raise statement)".
    8. 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.
    9. "itertools — Functions creating iterators for efficient looping — Python 3.7.1 documentation". docs.python.org.
    10. 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.
    11. "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
    12. Lundh, Fredrik. "Call By Object". effbot.org. Archived from the original on 23 November 2019. 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.
    13. 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
    14. Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. Retrieved 9 February 2012.
    15. Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 May 2001). "PEP 255 – Simple Generators". Python Enhancement Proposals. Python Software Foundation. Retrieved 9 February 2012.
    16. 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.
    17. "More Control Flow Tools". Python 3 documentation. Python Software Foundation. Retrieved 24 July 2015.
    18. "CoffeeScript". coffeescript.org.
    19. "The Genie Programming Language Tutorial". Retrieved 28 February 2020.
    20. "Perl and Python influences in JavaScript". www.2ality.com. 24 February 2013. Retrieved 15 May 2015.
    21. Rauschmayer, Axel. "Chapter 3: The Nature of JavaScript; Influences". O'Reilly, Speaking JavaScript. Retrieved 15 May 2015.
    22. "Why We Created Julia". Julia website. February 2012. Retrieved 5 June 2014. We want something as usable for general programming as Python [...]
    23. Ring Team (4 December 2017). "Ring and other languages". ring-lang.net. ring-lang.
    24. 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.
    25. 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.
    26. Kuhlman, Dave. "A Python Book: Beginning Python, Advanced Python, and Python Exercises". Section 1.1. Archived from the original (PDF) on 23 June 2012.
    27. Python Garbage Collection
    28. مستندات پایتون ۲ - زباله‌روب
    29. مستندات پایتون ۲ - زباله‌روب
    30. "Sunsetting Python 2". Python.org. Retrieved 2019-09-22.
    31. "PEP 373 -- Python 2.7 Release Schedule". Python.org. Retrieved 2019-09-22.
    32. "Python Developer's Guide — Python Developer's Guide". devguide.python.org. Retrieved 2019-12-17.
    33. «Python Programming Language – Official Website». Python Software Foundation. دریافت‌شده در ۵ فروردین ۱۳۹۰.
    34. Venners, Bill (13 January 2003). "The Making of Python". Artima Developer. Artima. Retrieved 22 March 2007.
    35. «History and License». The Python Software Foundation. مارس ۲۴, ۲۰۱۱. دریافت‌شده در ۵ فروردین ۱۳۹۰.
    36. مستندات پایتون - پایتون برای چه ایجاد شد؟
    37. van Rossum, Guido (20 January 2009). "A Brief Timeline of Python". The History of Python. Retrieved 20 January 2009.
    38. مشارکت‌کنندگان ویکی‌پدیا. «Benevolent Dictator For Life». در دانشنامهٔ ویکی‌پدیای انگلیسی، بازبینی‌شده در ۵ فروردین ۱۳۹۰.
    39. Fairchild, Carlie (12 July 2018). "Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life". Linux Journal. Retrieved 13 July 2018.
    40. "Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life | Linux Journal". www.linuxjournal.com.
    41. "Python boss Guido van Rossum steps down after 30 years". The Inquirer.
    42. "PEP 8100". python. Python Software Foundation. Retrieved 4 May 2019.
    43. "PEP 8100". Python Software Foundation. Retrieved 4 May 2019.
    44. https://discuss.python.org/t/steering-council-nomination-guido-van-rossum-2020-term/2657/11. Missing or empty |title= (help)
    45. Kuchling, A. M.; Zadka, Moshe (16 October 2000). "What's New in Python 2.0". Python Software Foundation. Retrieved 11 February 2012.
    46. "Python 3.0 Release". Python Software Foundation. Retrieved 8 July 2009.
    47. van Rossum, Guido (5 April 2006). "PEP 3000 – Python 3000". Python Enhancement Proposals. Python Software Foundation. Archived from the original on 3 March 2016. Retrieved 27 June 2009.
    48. "Automated Python 2 to 3 code translation — Python Documentation". Retrieved 11 February 2018.
    49. "PEP 373 -- Python 2.7 Release Schedule". python.org. Retrieved 9 January 2017.
    50. "PEP 466 -- Network Security Enhancements for Python 2.7.x". python.org. Retrieved 9 January 2017.
    51. The Cain Gang Ltd. "Python Metaclasses: Who? Why? When?" (PDF). Archived from the original (PDF) on 30 May 2009. Retrieved 27 June 2009.
    52. "3.3. Special method names". The Python Language Reference. Python Software Foundation. Retrieved 27 June 2009.
    53. "PyDatalog". Retrieved 22 July 2012.
    54. "Extending and Embedding the Python Interpreter: Reference Counts". Docs.python.org. Retrieved June 5, 2020. Since Python makes heavy use of malloc() and free(), it needs a strategy to avoid memory leaks as well as the use of freed memory. The chosen method is called reference counting.
    55. Hettinger, Raymond (30 January 2002). "PEP 289 – Generator Expressions". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012.
    56. "6.5 itertools – Functions creating iterators for efficient looping". Docs.python.org. Retrieved 22 November 2016.
    57. Peters, Tim (19 August 2004). "PEP 20 – The Zen of Python". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008.
    58. Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2nd Edition. O'Reilly Media. p. 230. ISBN 978-0-596-00797-3.
    59. "Python Culture". ebeab. January 21, 2014. Archived from the original on January 30, 2014.
    60. Goodger, David. "Code Like a Pythonista: Idiomatic Python". Archived from the original on 27 May 2014. Retrieved 24 March 2009.
    61. "How to think like a Pythonista". Archived from the original on 23 March 2018. Retrieved 8 July 2020.
    62. "Whetting Your Appetite". The Python Tutorial. Python Software Foundation. Retrieved 20 February 2012.
    63. "In Python, should I use else after a return in an if block?". Stack Overflow. Stack Exchange. 17 February 2011. Retrieved 6 May 2011.
    64. Lutz, Mark (2009). Learning Python: Powerful Object-Oriented Programming. O'Reilly Media, Inc. p. 17. ISBN 978-1-4493-7932-2.
    65. Fehily, Chris (2002). Python. Peachpit Press. p. xv. ISBN 978-0-201-74884-0.
    66. "Is Python a good language for beginning programmers?". General Python FAQ. Python Software Foundation. Retrieved 21 March 2007.
    67. "Myths about indentation in Python". Secnetix.de. Archived from the original on 18 February 2018. Retrieved 19 April 2011.
    68. 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.
    69. "PEP 0465 -- A dedicated infix operator for matrix multiplication". python.org. Retrieved 1 January 2016.
    70. "Python 3.5.1 Release and Changelog". python.org. Retrieved 1 January 2016.
    71. "What's New in Python 3.8". Retrieved 14 October 2019.
    72. "Chapter 15. Expressions - 15.21.1. Numerical Equality Operators == and !=". Oracle Corporation. Retrieved 28 August 2016.
    73. "Chapter 15. Expressions - 15.21.3. Reference Equality Operators == and !=". Oracle Corporation. Retrieved 28 August 2016.
    74. van Rossum, Guido; Hettinger, Raymond (7 February 2003). "PEP 308 – Conditional Expressions". Python Enhancement Proposals. Python Software Foundation. Retrieved 13 July 2011.
    75. "Why must 'self' be used explicitly in method definitions and calls?". Design and History FAQ. Python Software Foundation. Retrieved 19 February 2012.
    76. "The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.1". Retrieved 12 January 2011.
    77. "Built-in Types". Retrieved 3 October 2019.
    78. van Rossum, Guido (5 June 2001). "PEP 7 – Style Guide for C Code". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008.
    79. "CPython byte code". Docs.python.org. Retrieved 16 February 2016.
    80. "Python 2.5 internals" (PDF). Retrieved 19 April 2011.
    81. "An Interview with Guido van Rossum". Oreilly.com. Retrieved 24 November 2008.
    82. "PyPy compatibility". Pypy.org. Retrieved 3 December 2012.
    83. "speed comparison between CPython and Pypy". Speed.pypy.org. Retrieved 3 December 2012.
    84. Shaw, Anthony (2018-03-30). "Which is the fastest version of Python?". Hacker Noon. Retrieved 2019-12-20.
    85. "Application-level Stackless features — PyPy 2.0.2 documentation". Doc.pypy.org. Retrieved 17 July 2013.
    86. "Python-for-EV3". LEGO Education. Retrieved 17 April 2019.
    87. "Plans for optimizing Python". Google Project Hosting. 15 December 2009. Retrieved 24 September 2011.
    88. "Python on the Nokia N900". Stochastic Geometry. 2010-04-29.
    89. "google/grumpy". 10 April 2020 via GitHub.
    90. "Projects". opensource.google.
    91. "Nuitka Home | Nuitka Home". nuitka.net. Retrieved 18 August 2017.
    92. Borderies, Olivier (24 January 2019). "Pythran: Python at C++ speed !". Medium.
    93. "Pythran — Pythran 0.9.5 documentation". pythran.readthedocs.io.
    94. Warsaw, Barry; Hylton, Jeremy; Goodger, David (13 June 2000). "PEP 1 – PEP Purpose and Guidelines". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 April 2011.
    95. "PEP 8 -- Style Guide for Python Code". Python.org.
    96. Cannon, Brett. "Guido, Some Guys, and a Mailing List: How Python is Developed". python.org. Python Software Foundation. Archived from the original on 1 June 2009. Retrieved 27 June 2009.
    97. "Python Developer's Guide".
    98. "PEP 602 -- Annual Release Cycle for Python". Python.org. Retrieved 6 November 2019.
    99. "Changing the Python release cadence [LWN.net]". lwn.net. Retrieved 6 November 2019.
    100. Norwitz, Neal (8 April 2002). "[Python-Dev] Release Schedules (was Stability & change)". Retrieved 27 June 2009.
    101. Aahz; Baxter, Anthony (15 March 2001). "PEP 6 – Bug Fix Releases". Python Enhancement Proposals. Python Software Foundation. Retrieved 27 June 2009.
    102. Piotrowski, Przemyslaw (July 2006). "Build a Rapid Web Development Environment for Python Server Pages and Oracle". Oracle Technology Network. Oracle. Retrieved 12 March 2012.
    103. Batista, Facundo (17 October 2003). "PEP 327 – Decimal Data Type". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008.
    104. Eby, Phillip J. (7 December 2003). "PEP 333 – Python Web Server Gateway Interface v1.0". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012.
    105. Debill, Erik. "Module Counts". ModuleCounts. Retrieved 5 November 2019.
    106. "20+ Python Web Scraping Examples (Beautiful Soup & Selenium) - Like Geeks". likegeeks.com. 5 December 2017. Retrieved 12 March 2018.
    107. «GUI Programming in Python». The Python Wiki. ۲۰۱۰-۱۰-۱۰. دریافت‌شده در ۵ فروردین ۱۳۹۰.
    108. «Graphic User Interface FAQ». Python Software Foundation. مارس ۱۳, ۲۰۱۰. بایگانی‌شده از اصلی در ۶ اوت ۲۰۱۱. دریافت‌شده در ۵ فروردین ۱۳۹۰.
    109. "TIOBE Index". TIOBE - The Software Quality Company. Retrieved 7 March 2017.
    110. TIOBE Software Index (2015). "TIOBE Programming Community Index Python". Retrieved 10 September 2015.
    111. "Quotes about Python". Python Software Foundation. Retrieved 8 January 2012.
    112. "Organizations Using Python". Python Software Foundation. Retrieved 15 January 2009.
    113. "Python : the holy grail of programming". CERN Bulletin. CERN Publications (31/2006). 31 July 2006. Retrieved 11 February 2012.
    114. "Tornado: Facebook's Real-Time Web Framework for Python - Facebook for Developers". Facebook for Developers. Retrieved 2018-06-19.
    115. Shafer, Daniel G. (17 January 2003). "Python Streamlines Space Shuttle Mission Design". Python Software Foundation. Retrieved 24 November 2008.
    116. Taft, Darryl K. (5 March 2007). "Python Slithers into Systems". eWeek.com. Ziff Davis Holdings. Retrieved 24 September 2011.
    117. GitHub - reddit-archive/reddit: historical code from reddit.com., The Reddit Archives, 2019-03-19, retrieved 2019-03-20
    118. "Usage statistics and market share of Python for websites". 2012. Retrieved 18 December 2012.
    119. Oliphant, Travis (2007). "Python for Scientific Computing". Computing in Science and Engineering. 9 (3): 10–20. Bibcode:2007CSE.....9c..10O. CiteSeerX 10.1.1.474.6460. doi:10.1109/MCSE.2007.58.
    120. Millman, K. Jarrod; Aivazis, Michael (2011). "Python for Scientists and Engineers". Computing in Science and Engineering. 13 (2): 9–12. Bibcode:2011CSE....13b...9M. doi:10.1109/MCSE.2011.36.
    121. Science education with SageMath, Innovative Computing in Science Education, archived from the original on 15 June 2020, retrieved 22 April 2019
    122. "Installers for GIMP for Windows - Frequently Asked Questions". 26 July 2013. Archived from the original on 17 July 2013. Retrieved 26 July 2013.
    123. "jasc psp9components". Archived from the original on 19 March 2008.
    124. "About getting started with writing geoprocessing scripts". ArcGIS Desktop Help 9.2. Environmental Systems Research Institute. 17 November 2006. Retrieved 11 February 2012.
    125. CCP porkbelly (24 August 2010). "Stackless Python 2.7". EVE Community Dev Blogs. CCP Games. As you may know, EVE has at its core the programming language known as Stackless Python.
    126. Caudill, Barry (20 September 2005). "Modding Sid Meier's Civilization IV". Sid Meier's Civilization IV Developer Blog. Firaxis Games. Archived from the original on 2 December 2010. we created three levels of tools ... The next level offers Python and XML support, letting modders with more experience manipulate the game world and everything in it.
    127. "Python Language Guide (v1.0)". Google Documents List Data API v1.0. Archived from the original on 15 July 2010.
    128. "Immunity: Knowing You're Secure". Archived from the original on 16 February 2009.
    129. "Core Security". Core Security.
    130. Dean, Jeff; Monga, Rajat; et al. (9 November 2015). "TensorFlow: Large-scale machine learning on heterogeneous systems" (PDF). TensorFlow.org. Google Research. Retrieved 10 November 2015.
    131. Piatetsky, Gregory. "Python eats away at R: Top Software for Analytics, Data Science, Machine Learning in 2018: Trends and Analysis". KDnuggets. KDnuggets. Retrieved 30 May 2018.
    132. "Who is using scikit-learn? — scikit-learn 0.20.1 documentation". scikit-learn.org.
    133. "Natural Language Toolkit — NLTK 3.5b1 documentation". www.nltk.org.
    134. "Python Setup and Usage". Python Software Foundation. Retrieved 10 January 2020.
    135. "Gotchas for Python Users". boo.codehaus.org. Codehaus Foundation. Archived from the original on 11 December 2008. Retrieved 24 November 2008.
    136. Esterbrook, Charles. "Acknowledgements". cobra-language.com. Cobra Language. Retrieved 7 April 2010.
    137. Kincaid, Jason (10 November 2009). "Google's Go: A New Programming Language That's Python Meets C++". TechCrunch. Retrieved 29 January 2010.
    138. Strachan, James (29 August 2003). "Groovy – the birth of a new dynamic language for the Java platform". Archived from the original on 5 April 2007. Retrieved 11 June 2007.
    139. Yegulalp, Serdar (16 January 2017). "Nim language draws from best of Python, Rust, Go, and Lisp". InfoWorld. Nim's syntax is strongly reminiscent of Python's, as it uses indented code blocks and some of the same syntax (such as the way if/elif/then/else blocks are constructed).
    140. "An Interview with the Creator of Ruby". Linuxdevcenter.com. Retrieved 3 December 2012.
    141. Lattner, Chris (3 June 2014). "Chris Lattner's Homepage". Chris Lattner. Retrieved 3 June 2014. I started work on the Swift Programming Language in July of 2010. I implemented much of the basic language structure, with only a few people knowing of its existence. A few other (amazing) people started contributing in earnest late in 2011, and it became a major focus for the Apple Developer Tools group in July 2013 [...] drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.

    برای مطالعهٔ بیشتر

    • Downey, Allen B. (May 2012). Think Python: How to Think Like a Computer Scientist (Version 1.6.6 ed.). ISBN 978-0-521-72596-5.
    • Hamilton, Naomi (5 August 2008). "The A-Z of Programming Languages: Python". Computerworld. Archived from the original on 29 December 2008. Retrieved 31 March 2010.
    • Lutz, Mark (2013). Learning Python (5th ed.). O'Reilly Media. ISBN 978-0-596-15806-4.
    • Pilgrim, Mark (2004). Dive into Python. Apress. ISBN 978-1-59059-356-1.
    • Pilgrim, Mark (2009). Dive into Python 3. Apress. ISBN 978-1-4302-2415-0.
    • Summerfield, Mark (2009). Programming in Python 3 (2nd ed.). Addison-Wesley Professional. ISBN 978-0-321-68056-3.

    https://www.aparat.com/Python.Academy/Python_Academy

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

    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.