پایتون یک زبان برنامه نویسی همه منظوره سطح بالا است . فلسفه طراحی پایتون بر خوانایی کد با استفاده قابل توجه از تورفتگی قابل توجه تأکید دارد. هدف رویکرد شی گرا آن، همراه با فرمول زبانی آن، کمک به برنامه نویسان برای نوشتن کدهای واضح و منطقی برای پروژه های کوچک و بزرگ است. [30]
مثال | چند پارادایم : شی گرا ، [1] رویه ای ( اجباری )، عملکردی ، ساختاری ، بازتابی |
---|---|
طراحی شده توسط | گیدو ون روسوم |
توسعه دهنده | بنیاد نرم افزار پایتون |
برای اولین بار ظاهر شد | بهمن 91 [2] |
انتشار پایدار | |
انتشار پیش نمایش |
3.10.0b1 [3] /3 مه 2021
|
نظم و انضباط تایپ | اردک , پویا , تایپ قوی ; [4] قابل سریال سازی (از 3.5، اما در CPython نادیده گرفته شده است ) [5] |
سیستم عامل | ویندوز ، لینوکس/یونیکس ، macOS و موارد دیگر [6] |
مجوز | مجوز بنیاد نرم افزار پایتون |
پسوند نام فایل | .py، .pyi، .pyc، .pyd، .pyo (قبل از 3.5)، [7] .pyw، .pyz (از 3.5) [8] |
سایت اینترنتی | www.python.org |
اجرای عمده | |
CPython، PyPy، Stackless Python، MicroPython، CircuitPython، IronPython، Jython | |
لهجه ها | |
Cython، RPython، Starlark [9] | |
متاثر از | |
ABC، [10] Ada، [11] Algol 68، [12] APL، [13] C، [14] C++، [15] CLU، [16] Dylan، [17] Haskell، [18] نماد، [19] ] ] جاوا، [20] Lisp، [21] Modula-3، [15] Perl، استاندارد ML [13] | |
تحت تأثیر قرار گرفت | |
Apache Groovy, Boo, Cobra, CoffeeScript, [22] D, F#, Jini, [23] Go, JavaScript, [24] [25] Julia, [26] Nim, Ring, [27] Ruby, [28] Swift [ 29] | |
|
پایتون به صورت پویا تایپ می شود و زباله جمع آوری می شود. از چندین پارادایم برنامه نویسی، از جمله برنامه نویسی ساخت یافته (به طور خاص، رویه ای)، شی گرا و تابعی پشتیبانی می کند. Python اغلب به عنوان یک زبان “درگیر باتری” توصیف می شود، زیرا کتابخانه استاندارد گسترده ای دارد. [31]
Guido van Rossum کار بر روی Python را در اواخر دهه 1980 به عنوان جانشین زبان برنامه نویسی ABC آغاز کرد و اولین بار آن را با نام Python 0.9.0 در سال 1991 منتشر کرد. [32] Python 2.0 در سال 2000 منتشر شد و ویژگیهای جدیدی مانند سیستم جمعآوری زباله با استفاده از درک لیست و شمارش مراجع را معرفی کرد. Python 3.0 در سال 2008 منتشر شد و دارای یک تجدید نظر اساسی در زبان بود که به طور کامل با پخش سازگار نیست و همچنین بسیاری از کدهای Python 2 بدون تغییر روی Python 3 اجرا نمی شوند. پایتون 2 در سال 2020 با نسخه 2.7.18 متوقف شد [33] ]
پایتون همواره یکی از محبوب ترین زبان های برنامه نویسی است. [34] [35] [36] [37] [38]
تاریخچه:
Guido van Rossum در OSCON 2006
پایتون در اواخر دهه 1980 [39] توسط Guido van Rossum در Centrum Wiskunde and Informatica (CWI) در هلند به عنوان جانشین زبان برنامه نویسی ABC، که از SETL الهام گرفته شده بود، [40] با قابلیت مدیریت استثنا و رابط معرفی شد. سیستم عامل آمیب [10] اجرای آن در دسامبر 1989 آغاز شد. [41] Van Rossum مسئولیت کامل پروژه را به عنوان توسعهدهنده اصلی تا 12 ژوئیه 2018 بر عهده گرفت، زمانی که او “مرخصی دائم” خود را از مسئولیتهای خود به عنوان دیکتاتور خیرخواه پایتون برای زندگی اعلام کرد. عنوانی که توسط جامعه پایتون داده شده است تا نشان دهنده تعهد بلندمدت آن به تصمیم گیرنده اصلی پروژه باشد. [42]در ژانویه 2019، توسعه دهندگان هسته Python یک “شورای راهبری” 5 نفره را برای رهبری پروژه انتخاب کردند. [43] از سال 2021، اعضای فعلی این شورا بری ورشو، برت کانن، کارول ویلینگ، توماس واترز و پابلو گالیندو سالگادو هستند. [44]
Python 2.0 در 16 اکتبر 2000 منتشر شد و چندین ویژگی مهم جدید از جمله جمعآوری زبالههای شناسایی چرخه و پشتیبانی از یونیکد را اضافه کرد. [45]
Python 3.0 در 3 دسامبر 2008 منتشر شد. این یک بازنگری عمده از زبانی بود که کاملاً با عقب سازگار نیست. [46] بسیاری از ویژگیهای کلیدی آن به سری نسخههای Python 2.6.x [47] و 2.7.x پشتیبانگیری شدند. نسخه پایتون 3 شامل ابزاری است که به طور خودکار (حداقل تا حدی) کد پایتون 2 را به پایتون 3 ترجمه می کند. [48]2to3
تاریخ پایان عمر پایتون 2.7 ابتدا در سال 2015 تعیین شد، سپس به دلیل نگرانی از اینکه ممکن است حجم زیادی از کدهای موجود به راحتی به پایتون 3 ارسال نشود، به سال 2020 موکول شد. [49] [50] هیچ وصله امنیتی یا پیشرفت دیگری منتشر نخواهد شد. [51] [52] با پایان عمر پایتون 2، فقط پایتون 3.6.x [53] و نسخه های جدیدتر پشتیبانی می شود.
پایتون 3.9.2 و 3.8.8 تسریع شدند [54] زیرا تمام نسخه های پایتون (از جمله 2.7 [55] ) دارای مشکلات امنیتی بودند که منجر به اجرای کد از راه دور بالقوه [56] و مسمومیت کش وب شد. [57]
فلسفه و ویژگی های طراحی
پایتون یک زبان برنامه نویسی چند پارادایم است. برنامه نویسی شی گرا و برنامه نویسی ساخت یافته به طور کامل پشتیبانی می شوند و بسیاری از ویژگی های آن از برنامه نویسی تابعی و برنامه نویسی جنبه گرا پشتیبانی می کنند (با شامل فرابرنامه نویسی [58] و متا اشیا (روش های جادویی)). [59] چندین پارادایم دیگر از طریق برنامههای افزودنی پشتیبانی میشوند، از جمله طراحی با قرارداد [60] [61] و برنامهنویسی منطقی. [62]
پایتون از ترکیبی از تایپ پویا و شمارش ارجاعات و یک زباله جمعآور چرخه برای مدیریت حافظه استفاده میکند. [63] همچنین شامل وضوح نام پویا (پیوند دیرهنگام)، که نام متدها و متغیرها را در طول اجرای برنامه متصل میکند.
طراحی پایتون تا حدودی از برنامه نویسی تابعی در سنت Lisp پشتیبانی می کند. هست و کار می کند. درک، واژه نامه ها، مجموعه ها و عبارات مولد را فهرست کنید. [64] کتابخانه استاندارد متشکل از دو ماژول (itertools و functools) است که ابزارهای کاربردی وام گرفته شده از Haskell و Standard ML را پیاده سازی می کند. [65]filter
map
reduce
فلسفه اصلی زبان در سند The Zen of Python ( PEP 20 ) خلاصه شده است که شامل فرمول هایی مانند: [66]
- زیبا بهتر از زشت است.
- صریح بهتر از ضمنی است.
- ساده بهتر از پیچیده است.
- پیچیده بهتر از پیچیده است.
- خوانایی مهم است.
پایتون بهجای اینکه تمام قابلیتهایش در هستهاش تعبیه شده باشد، به گونهای طراحی شد که بسیار توسعهپذیر (با ماژولها) باشد. این ماژولار بودن فشرده آن را به عنوان وسیله ای برای افزودن رابط های قابل برنامه ریزی به برنامه های موجود محبوب کرده است. دیدگاه ون روسوم از یک زبان اصلی کوچک با یک کتابخانه استاندارد بزرگ و یک مترجم به راحتی قابل توسعه، ناشی از ناامیدی او از ABC بود، که دیدگاه مخالف را ترجیح می داد. [39]
پایتون برای یک نحو و دستور زبان سادهتر و کمتر تلاش میکند و در عین حال به توسعهدهندگان امکان انتخاب در روش کدنویسی خود را میدهد. برخلاف پرل “بیش از یک راه برای انجام آن وجود دارد”، پایتون از فلسفه طراحی “باید یک – و ترجیحاً تنها یک – روش واضح برای انجام آن وجود داشته باشد” پذیرفته است. [66] الکس مارتلی، یکی از همکاران بنیاد نرمافزار پایتون و نویسنده کتاب پایتون، مینویسد که «توصیف چیزی بهعنوان «هوشمندانه» در فرهنگ پایتون یک تعریف محسوب نمیشود . [67]
توسعهدهندگان پایتون سعی میکنند از بهینهسازی زودهنگام اجتناب کنند و وصلههایی را برای بخشهای غیر بحرانی پیادهسازی مرجع CPython که باعث افزایش جزئی سرعت در هزینه وضوح میشود، مجاز نمیدانند. [68] هنگامی که سرعت مهم است، یک برنامه نویس پایتون می تواند توابع حیاتی زمان را به ماژول های افزونه نوشته شده به زبان هایی مانند C منتقل کند یا از PyPy، یک کامپایلر به موقع استفاده کند. Cython نیز موجود است که یک اسکریپت پایتون را به C ترجمه میکند و تماسهای API سطح C را مستقیماً با مفسر پایتون برقرار میکند.
هدف مهم توسعه دهندگان پایتون لذت بردن از استفاده از آن است. این در نام زبان – ادای احترام به گروه کمدی بریتانیایی مونتی پایتون [69] – و در رویکرد گاهی اوقات بازیگوش به آموزش ها و مواد مرجع، مانند نمونه هایی از Joe Spam و Eggs (از طرح معروف مونتی پایتون) منعکس شده است. اشاره به غذا و بار استاندارد. [70] [71]
یک نئولوژیسم رایج در جامعه پایتون ، پایتونیک است که میتواند طیف وسیعی از معانی مرتبط با سبک برنامه را داشته باشد. گفتن اینکه کد پایتونیک است به این معناست که از اصطلاحات پایتون به خوبی استفاده میکند، طبیعی است یا روانی زبان را نشان میدهد، که بر فلسفه و خوانایی حداقلی پایتون تأکید میکند. برعکس، کدی که درک آن دشوار است یا مانند رونویسی ناخالص از یک زبان برنامه نویسی دیگر خوانده می شود، غیرپایتونیک است. [72] [73]
کاربران و طرفداران پایتون، به ویژه آنهایی که آگاه یا با تجربه در نظر گرفته می شوند، اغلب به عنوان پایتونیست شناخته می شوند. [74] [75]
نحو و معناشناسی
پایتون به عنوان یک زبان به راحتی قابل خواندن در نظر گرفته می شود. قالب بندی آن به طور قابل توجهی به هم ریخته است و اغلب از کلمات کلیدی انگلیسی در جایی که زبان های دیگر از علائم نگارشی استفاده می کنند استفاده می کند. برخلاف بسیاری از زبانهای دیگر، از براکتهای فرفری برای محدود کردن بلوکها استفاده نمیکند، و نیمویرگولها بعد از دستورات مجاز هستند، اما به ندرت استفاده میشوند. استثناهای نحوی و موارد خاص کمتری نسبت به C یا Pascal دارد. [76]
تورفتگی
پایتون از تورفتگی فضای خالی به جای براکت ها یا کلمات کلیدی برای محدود کردن بلوک ها استفاده می کند. تورفتگی پس از برخی جملات افزایش می یابد. کاهش تورفتگی نشان دهنده پایان بلوک فعلی است. [77] بنابراین، ساختار بصری برنامه به طور دقیق ساختار معنایی برنامه را نشان می دهد. [2] این ویژگی گاهی اوقات قانون آفساید نامیده میشود که برخی از زبانهای دیگر آن را به اشتراک میگذارند، اما تورفتگی در بیشتر زبانها معنای معنایی ندارد. اندازه تورفتگی توصیه شده چهار فاصله است. [78]
بیانیه و جریان کنترل
عبارات پایتون شامل (در میان دیگران):
- بیانیه های تکلیف، با استفاده از یک علامت مساوی
=
. if
دستور، که بلوکی از کد شرطی، به علاوهelse
وelif
(انقباض else-if) را اجرا می کند.for
دستوری که روی یک شیء تکرارپذیر تکرار میشود، هر عنصر را به یک متغیر محلی برای استفاده توسط بلوک محصور میگیرد.while
دستوری که یک بلوک کد را تا زمانی که شرط آن درست باشد اجرا می کند.try
عبارت، که اجازه می دهد استثناهای مطرح شده در بلوک کد محصور خود را گرفته و توسطexcept
بند مدیریت شود. همچنین تضمین می کند کهfinally
کد پاکسازی در بلوک، صرف نظر از نحوه خروج بلوک، همیشه اجرا می شود.raise
عبارتی که برای بالا بردن یک استثنا مشخص شده یا برای مطرح کردن مجدد یک استثنای گرفتار استفاده می شود.class
دستور، که بلوکی از کد را اجرا می کند و فضای نام محلی آن را برای استفاده در برنامه نویسی شی گرا به یک کلاس برمی گرداند.- عبارتی
def
که یک تابع یا متد را تعریف می کند. with
بیانیه، که یک بلوک کد را در یک مدیریت زمینه محصور می کند (به عنوان مثال، به دست آوردن یک قفل قبل از اجرای بلوک کد و آزاد کردن قفل پس از آن، یا باز کردن یک فایل و سپس بستن آن) اجازه می دهد تا منبع-اکتساب-آغاز-آغاز کردن (RAII) )-مانند رفتار و جایگزین یک اصطلاح رایج try/finally می شود. [79]- عبارت break، از یک حلقه خارج می شود.
continue
راوی این تکرار را نادیده می گیرد و به مورد بعدی ادامه می دهد.del
عبارت یک متغیر را حذف می کند، به این معنی که اشاره به نام مقدار از بین می رود و تلاش برای دسترسی به آن متغیر باعث خطا می شود. متغیرهای حذف شده را می توان دوباره اختصاص داد.pass
بیانیه، که به عنوان یک نه عمل می کند. ایجاد یک بلوک کد خالی نیاز به نحو دارد.assert
عبارتی که برای بررسی شرایط اعمال شده در حین اشکال زدایی استفاده می شود.yield
دستور، که مقداری را از یک تابع مولد برمی گرداند وyield
همچنین یک عملگر است. این فرم برای پیاده سازی کوروتین ها استفاده می شود.return
عبارتی که برای برگرداندن مقداری از یک تابع استفاده می شود.import
عبارت، که برای وارد کردن ماژول هایی استفاده می شود که توابع یا متغیرهای آن را می توان در برنامه فعلی استفاده کرد.
دستور انتساب ( =
) با اتصال یک نام به عنوان یک مرجع به یک شی جداگانه و به صورت پویا تخصیص یافته عمل می کند. متغیرها می توانند بعداً در هر زمان به هر شیئی بازگردند. در پایتون، نام متغیر یک دارنده مرجع عمومی است و یک نوع داده ثابت مرتبط با آن ندارد. با این حال، در یک نقطه زمانی معین، یک متغیر به یک شی اشاره خواهد کرد که دارای یک نوع است. این به عنوان تایپ پویا نامیده می شود و برخلاف زبان های برنامه نویسی تایپ ایستا است که در آن هر متغیر فقط می تواند مقادیری از نوع خاصی داشته باشد.
پایتون از بهینهسازی tail call یا ادامههای کلاس اول پشتیبانی نمیکند و به گفته Guido van Rossum، هرگز پشتیبانی نخواهد کرد. [80] [81] با این حال، پشتیبانی بهتر از عملکرد شبه کوروتین با گسترش مولدهای پایتون ارائه میشود. [82] قبل از 2.5، مولدها تکرار کننده تنبل بودند. اطلاعات به طور غیرمستقیم به خارج از ژنراتور منتقل شد. از پایتون 2.5، امکان بازگرداندن اطلاعات به یک تابع مولد وجود دارد، و از پایتون 3.3، اطلاعات را می توان از چندین سطح پشته منتقل کرد. [83]
قیمت
برخی از عبارات پایتون مشابه آنهایی هستند که در زبان هایی مانند C و جاوا یافت می شوند، در حالی که برخی از آنها اینگونه نیستند:
- جمع، تفریق و ضرب یکی هستند، اما رفتار تقسیم متفاوت است. دو نوع تقسیم در پایتون وجود دارد. آنها تقسیم طبقه (یا تقسیم عدد صحیح)
//
و تقسیم ممیز شناور هستند/
. [84] پایتون همچنین**
از عملگر برای توان استفاده می کند. - از پایتون 3.5،
@
اپراتور جدید infix معرفی شد. در نظر گرفته شده است که توسط کتابخانه هایی مانند NumPy برای ضرب ماتریس استفاده شود. [85] [86] - از پایتون 3.8،
:=
نحوی به نام «اپراتور والروس» معرفی شد. مقادیری را به متغیرها به عنوان بخشی از یک عبارت بزرگتر اختصاص می دهد. [87] ==
مقایسه بر اساس مقدار در پایتون ، در مقابل جاوا، که اعداد را با مقدار [88] مقایسه می کند و اشیاء را با مرجع مقایسه می کند. [89]equals()
(مقایسه ارزش در اشیا را می توان با روش در جاوا انجام داد.)is
عملگرهای پایتون را می توان برای مقایسه هویت اشیاء استفاده کرد (مقایسه با مرجع). به عنوان مثال، مقایسه ها در پایتون را می توان زنجیره ای کرد.a <= b <= c
- پایتون از کلمات ,
and
,or
,not
برای عملگرهای بولی خود به جای نمادین&&
, استفاده||
می!
کند که در جاوا و C استفاده می شود. - پایتون یک نوع عبارت به نام درک لیست و همچنین یک عبارت عمومی تر به نام عبارت مولد دارد . [64]
- توابع ناشناس با استفاده از عبارات لامبدا اجرا می شوند. با این حال، اینها از این جهت محدود هستند که بدن فقط می تواند یک بیان باشد.
- عبارات شرطی در پایتون به صورت [90] نوشته می شود (ترتیب عملوندها با عملگر معمولی در بسیاری از زبان های دیگر متفاوت است).
x if c else y
c ? x : y
- پایتون بین لیست ها و تاپل ها تفاوت قائل می شود. لیست ها به صورت نوشته می شوند، قابل تغییر هستند و نمی توان از آنها به عنوان کلید واژه نامه ها استفاده کرد (کلیدهای دیکشنری باید در پایتون تغییر ناپذیر باشند). تاپل ها تغییر ناپذیر هستند و بنابراین می توان از آنها به عنوان کلید واژه نامه ها استفاده کرد، مشروط بر اینکه همه عناصر تاپل تغییر ناپذیر باشند. از عملگر می توان برای به هم پیوستن دو تاپل استفاده کرد که محتوای آنها را مستقیماً تغییر نمی دهد، بلکه یک تاپل جدید حاوی عناصر هر دو تاپل ارائه شده تولید می کند. بنابراین، با توجه به اینکه متغیر در ابتدا برابر است، اولین ارزیابی انجام میشود، که نتیجه میشود، که پس از آن مجدداً تخصیص داده میشود، در نتیجه به طور مؤثر «محتوا را اصلاح میکند». در حالی که تاپل با ماهیت تغییرناپذیر اجسام مطابقت دارد. پرانتز برای تاپل ها در زمینه های واضح اختیاری است.[91]
[1, 2, 3]
(1, 2, 3)
+
t
(1, 2, 3)
t = t + (4, 5)
t + (4, 5)
(1, 2, 3, 4, 5)
t
t
- پایتون ویژگی باز کردن بستهبندی دنبالهای دارد که در آن عبارات متعدد، هر کدام را میتوان به هر چیزی ارزیابی کرد (یک متغیر، یک ویژگی قابل نوشتن، و غیره)، که یک تاپل را به شکلی یکنواخت به معنای واقعی کلمه میسازد و بهطور کلی، در سمت چپ برابر قرار میگیرد. در بیانیه تکلیف امضا کنید. عبارت انتظار دارد یک شی قابل تکرار در سمت راست علامت مساوی باشد که مقادیر یکسان عبارات قابل نوشتن ارائه شده را هنگام تکرار از طریق و تکرار از طریق ایجاد می کند، هر یک از مقادیر تولید شده در عبارت مربوطه در سمت چپ. مشخص می کند. [92]
- پایتون یک عملگر “فرمت رشته ای”
%
دارد. بهprintf
طور مشابه برای قالب بندی رشته ها در C، به عنوان مثال در . در پایتون 3 و 2.6+، این با یک متد کلاس تکمیل شد، به عنوان مثال در . Python 3.6 “f-strings” را اضافه کرد: . [93]"spam=%s eggs=%d" % ("blah", 2)
"spam=blah eggs=2"
format()
str
"spam={0} eggs={1}".format("blah", 2)
blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'
- رشته ها در پایتون را می توان با “افزودن” (همان عملگر برای اضافه کردن اعداد صحیح و شناور) به هم متصل کرد. به عنوان مثال بازگشت. حتی اگر رشته های شما حاوی اعداد باشد، به جای اعداد صحیح به عنوان رشته اضافه می شوند. به عنوان مثال بازگشت.
"spam" + "eggs"
"spameggs"
"2" + "2"
"22"
-
انواع مختلفی از لفظ رشته ای در پایتون وجود دارد:
- رشته ها با گیومه های تک یا دوتایی مشخص می شوند. بر خلاف زبان های پوسته یونیکس، پرل و زبان های تحت تأثیر پرل، علامت های نقل قول تکی و علامت های نقل قول دوگانه به طور مشابه عمل می کنند. هر دو نوع رشته از بک اسلش (
\
) به عنوان کاراکتر فرار استفاده می کنند. درون یابی رشته ای در پایتون 3.6 به عنوان “رشته های قالب بندی شده” در دسترس قرار گرفت. [93] - رشته های نقل قول سه گانه، که با یک سری از سه نقل قول یک یا دو شروع و پایان می یابد. آنها می توانند چندین خط باشند و مانند مستندات اینجا در Shells، Perl و Ruby کار کنند.
- انواع رشته های خام با پیشوند رشته تحت اللفظی با یک
r
نشان داده می شوند. توالی فرار توضیح داده نشده است. بنابراین رشتههای خام در جاهایی مفید هستند که بک اسلشهای تحت اللفظی رایج هستند، مانند عبارات منظم و مسیرهای به سبک ویندوز.@
“-quoting” را در سی شارپ مقایسه کنید.
- رشته ها با گیومه های تک یا دوتایی مشخص می شوند. بر خلاف زبان های پوسته یونیکس، پرل و زبان های تحت تأثیر پرل، علامت های نقل قول تکی و علامت های نقل قول دوگانه به طور مشابه عمل می کنند. هر دو نوع رشته از بک اسلش (
- پایتون دارای عبارات شاخص آرایه و برش آرایه در لیست ها است
a[key]
که به صورت , یا نمایش داده می شوند. شاخص ها بر اساس صفر هستند و شاخص های منفی نسبت به پایان هستند. برش ها عناصر را از نمایه شروع به نمایه توقف حرکت می دهند، اما آنها را شامل نمی شوند. سومین پارامتر برش، که step یا stride نامیده می شود ، اجازه می دهد تا عناصر را نادیده گرفته و معکوس کنند. فهرست برش را می توان حذف کرد، به عنوان مثال یک کپی از کل لیست را برمی گرداند. هر عنصر یک برش یک کپی کم عمق است.a[start:stop]
a[start:stop:step]
a[:]
بر خلاف زبان هایی مانند Common Lisp، Scheme یا Ruby، در پایتون، تمایز بین عبارات و عبارات به شدت اعمال می شود. این منجر به تکرار برخی از عملکردها می شود. مثلا:
- درک لیست در مقابل
for
-حلقه - عبارت شرطی در مقابل
if
بلوک eval()
در مقابلexec()
توابع داخلی (در پایتون 2،exec
یک عبارت است). اولی برای عبارات است، دومی برای بیانیه ها.
عبارات نمی توانند بخشی از یک عبارت باشند، بنابراین لیست و سایر درک یا عبارات لامبدا، نه همه عبارات، می توانند عبارت باشند. یک مورد خاص این است که یک دستور انتساب مانند این نمی تواند بخشی از بیان شرطی یک دستور شرطی را تشکیل دهد. این مزیت اجتناب از خطای کلاسیک C در اشتباه گرفتن عملگر انتساب با عملگر برابری در شرایط است: کد C از نظر نحوی معتبر است (اما احتمالاً ناخواسته) اما باعث ایجاد یک خطای نحوی در پایتون می شود.a = 1
=
==
if (c = 1) { ... }
if c = 1: ...
مواد و روش ها
متدهای روی اشیاء توابعی هستند که با کلاس شیء مرتبط هستند. نحو، برای روش ها و توابع عمومی، برای قند نحوی است. بر خلاف برخی دیگر از زبانهای برنامهنویسی شیگرا (مانند C++، جاوا، Objective-C یا Ruby)، روشهای پایتون یک پارامتر صریح برای دسترسی به دادههای نمونه دارند. [94]instance.method(argument)
Class.method(instance, argument)
self
self
this
تایپ کردن
سلسله مراتب نوع استاندارد در پایتون 3
پایتون از تایپ اردک استفاده می کند و اشیاء تایپ شده اما نام متغیرهای تایپ نشده دارد. محدودیت های نوع در زمان کامپایل بررسی نمی شوند. در عوض، عملیات روی یک شی ممکن است شکست بخورد، که نشان می دهد شی داده شده از نوع مناسب نیست. علیرغم اینکه پایتون به صورت پویا تایپ میشود، به شدت تایپ میشود، که توابعی را که به خوبی تعریف نشدهاند (مثلاً اضافه کردن یک عدد به یک رشته) از تلاش برای رمزگشایی بیصدا منع میکند.
پایتون به برنامه نویسان اجازه می دهد تا انواع خود را با استفاده از کلاس ها تعریف کنند که اغلب برای برنامه نویسی شی گرا استفاده می شوند. نمونههای جدیدی از کلاسها با فراخوانی کلاس ایجاد میشوند (مثلاً یا )، و کلاسها نمونههایی از یک متاکلاس (نمونهای از خود) هستند که امکان فرابرنامهنویسی و بازتاب را فراهم میکنند.SpamClass()
EggsClass()
type
قبل از نسخه 3.0، دو نوع کلاس در پایتون وجود داشت: سبک قدیمی و سبک جدید . [95] هر دو سبک نحو یکسانی دارند، تفاوت در این است که کلاس به object
طور مستقیم یا غیرمستقیم به ارث میرسد (همه کلاسهای سبک جدید ارث میبرند object
و نمونههایی دارند type
). در نسخه های پایتون 2 بعد از پایتون 2.2، می توان از هر دو نوع کلاس استفاده کرد. کلاس های قدیمی در پایتون 3.0 لغو شدند.
برنامه بلندمدت پشتیبانی از تایپ متوالی [96] است و از پایتون 3.5، نحو زبان اجازه می دهد تا انواع استاتیک مشخص شوند، اما در اجرای پیش فرض، CPython، بررسی نمی شوند. یک کنترل کننده نوع استاتیک اختیاری تجربی به نام mypy از بررسی نوع زمان کامپایل پشتیبانی می کند. [97]
نوع | بی ثباتی | شرح | مثال نحوی |
---|---|---|---|
bool |
تزلزل ناپذیر | مقدار بولی | True False |
bytearray |
متغیر | دنباله ای از بایت ها | bytearray(b'Some ASCII') bytearray(b"Some ASCII") bytearray([119, 105, 107, 105]) |
bytes |
تزلزل ناپذیر | دنباله ای از بایت ها | b'Some ASCII' b"Some ASCII" bytes([119, 105, 107, 105]) |
complex |
تزلزل ناپذیر | اعداد مختلط با اجزای واقعی و خیالی | 3+2.7j 3 + 2.7j |
dict |
متغیر | آرایه انجمنی (یا فرهنگ لغت) از جفت کلید و مقدار. می تواند از نوع ترکیبی (کلید و مقدار) باشد، کلیدها باید از نوع هش شوند | {'key1': 1.0, 3: False} {} |
ellipsis آ |
تزلزل ناپذیر | یک مکان نگهدار بیضی برای استفاده به عنوان شاخص در آرایه های NumPy | ... Ellipsis |
float |
تزلزل ناپذیر | اعداد ممیز شناور با دقت دو برابر. دقت به ماشین بستگی دارد اما در عمل معمولاً به عنوان یک عدد IEEE 754 64 بیتی با دقت 53 بیت پیاده سازی می شود. [98] | 1.414 |
frozenset |
تزلزل ناپذیر | مجموعه نامرتب، حاوی موارد تکراری نیست. در صورت هش کردن، می تواند انواع ترکیبی داشته باشد | frozenset([4.0, 'string', True]) |
int |
تزلزل ناپذیر | عدد صحیح با قدر نامتناهی [99] | 42 |
list |
متغیر | لیست می تواند از نوع ترکیبی باشد | [4.0, 'string', True] [] |
NoneType آ |
تزلزل ناپذیر | یک شی نشان دهنده عدم وجود یک مقدار است که اغلب در زبان های دیگر null نامیده می شود | None |
NotImplementedType آ |
تزلزل ناپذیر | یک مکان نگهدار که می تواند از عملگرهای بارگذاری شده بازگردانده شود تا انواع عملوند پشتیبانی نشده را نشان دهد. | NotImplemented |
range |
تزلزل ناپذیر | دنباله ای از اعداد که معمولاً برای حلقه زدن تعداد مشخصی بار در for حلقه ها استفاده می شود [100] |
range(1, 10) range(10, -5, -2) |
set |
متغیر | مجموعه نامرتب، حاوی موارد تکراری نیست. در صورت هش کردن، می تواند انواع ترکیبی داشته باشد | {4.0, 'string', True} set() |
str |
تزلزل ناپذیر | یک رشته کاراکتر: دنباله ای از نقاط کد یونیکد | 'Wikipedia' "Wikipedia"
""" در چندین خط پخش شده است """
|
tuple |
تزلزل ناپذیر | می توان مخلوط کرد | (4.0, 'string', True) ('single element',) () |
^a مستقیماً با نام قابل دسترسی نیست
عملیات حسابی
پایتون دارای نمادهای مشترک برای عملگرهای حسابی (،،،، +
) ، -
عملگرهای تقسیم طبقه و عملیات مدول (که در آن باقیمانده می تواند منفی باشد، مانند ). همچنین دارای یکی برای توان، به عنوان مثال و، و یک عملگر ضرب ماتریس است. [101] این عملگرها مانند ریاضیات سنتی کار می کنند. با همان قوانین تقدم، عملگر پسوند (و همچنین می تواند واحد باشد تا به ترتیب اعداد مثبت و منفی را نشان دهد).*
/
//
%
4 % -3 == -2
**
5**3 == 125
9**0.5 == 3.0
@
+
-
تقسیم بین اعداد صحیح یک نتیجه ممیز شناور ایجاد می کند. رفتار تقسیم بندی در طول زمان به طور قابل توجهی تغییر کرده است: [102]
- پایتون 2.1 و قبل از آن از رفتار تقسیم C استفاده می کرد.
/
اگر هر دو عملوند صحیح باشند، تقسیم عملگر عدد صحیح است و در غیر این صورت، تقسیم ممیز شناور است. تقسیم عدد صحیح به 0 می رسد، برای مثال و .7/3 == 2
-7/3 == -2
- پایتون 2.2 تقسیم اعداد صحیح را به دور به بی نهایت منفی تغییر داد، همانطور که
7/3 == 2
در-7/3 == -3
.//
اپراتور تقسیم طبقه معرفی شد. بنابراین7//3 == 2
،-7//3 == -3
،7.5//3 == 2.0
و-7.5//3 == -3.0
. افزودن یک ماژول از قوانین Python 3.0 برای تقسیم استفاده می کند (بعدی را ببینید).from __future__ import division
- پایتون 3.0
/
همیشه به تقسیم ممیز شناور مانند .5/2 == 2.5
در اصطلاح پایتون، /
تقسیم واقعی (یا به سادگی تقسیم ) است و //
تقسیم طبقه است. /
قبل از نسخه 3.0 بخش کلاسیک است . [102]
حرکت به سمت بینهایت منفی، علیرغم متفاوت بودن با بیشتر زبانها، تداوم میافزاید. به عنوان مثال، این بدان معنی است که معادله همیشه درست است. این همچنین به این معنی است که معادله برای مقادیر مثبت و منفی معتبر است. با این حال، حفظ اعتبار این معادله به این معنی است که، همانطور که انتظار میرود، نتیجه در بازه نیمه باز [0, b ) ایجاد میشود، در جایی که a یک عدد صحیح مثبت است، باید در بازه ( b ، 0] در صورت منفی باشد. [103] . ](a + b)//b == a//b + 1
b*(a//b) + a%b == a
a
a%b
b
b
round
پایتون تابعی را برای گرد کردن یک شناور به نزدیکترین عدد صحیح ارائه می دهد. برای شکستن کراوات، پایتون از 3 استفاده می کند تا زوج : را گرد کند و هر دو را تولید کند. [104] نسخه های قبل از 3 دور-از-صفر: is , is . [105]round(1.5)
round(2.5)
2
round(0.5)
1.0
round(-0.5)
−1.0
پایتون به عبارات بولی با روابط هم ارزی چندگانه اجازه می دهد که با استفاده رایج در ریاضیات سازگار است. به عنوان مثال، عبارت a < b < c
آزمایش a
می کند که آیا is کمتر b
و b
کمتر از c
. [106] زبانهای مشتقشده از C این عبارت را بهطور متفاوتی تفسیر میکنند: در C، عبارت ابتدا ارزیابی a < b
میشود که به 0 یا 1 میرسد و سپس آن نتیجه با c
. [107]
پایتون از محاسبات با دقت دلخواه برای تمام عملیات اعداد صحیح استفاده می کند. Decimal
ماژول مرتبسازی/در کلاس decimal
، اعداد ممیز شناور اعشاری را به یک دقت دلخواه از پیش تعیینشده و حالتهای گرد چندگانه ارائه میکند. [108]Fraction
ماژول in class fractions
دقت دلخواه را برای اعداد گویا فراهم می کند. [109]
با توجه به کتابخانه ریاضی گسترده پایتون و کتابخانه شخص ثالث NumPy، که قابلیت های بومی را بیشتر می کند، اغلب به عنوان یک زبان برنامه نویسی علمی برای کمک به مشکلاتی مانند پردازش و دستکاری داده های عددی استفاده می شود. [110] [111]
نمونه برنامه نویسی
برنامه سلام جهان:
چاپ ( "سلام، دنیا!" )
برنامه محاسبه فاکتوریل یک عدد صحیح مثبت:
n = int ( ورودی ( 'عددی را تایپ کنید و فاکتوریل آن چاپ خواهد شد:' )) اگر n < 0 : raise ValueError ( 'شما باید یک عدد صحیح غیر منفی وارد کنید' ) برای فاکتوریل = 1 i در محدوده ( 2 , n + 1 ) : فاکتوریل * = i print ( فاکتوریل )
کتابخانه ها
کتابخانه استاندارد گسترده پایتون، که معمولاً به عنوان یکی از بزرگترین نقاط قوت آن ذکر می شود، [112] ابزارهای مناسب برای بسیاری از وظایف را فراهم می کند. برای برنامه های متصل به اینترنت، چندین فرمت و پروتکل استاندارد مانند MIME و HTTP پشتیبانی می شوند. این شامل ماژول هایی برای ایجاد رابط های کاربر گرافیکی، اتصال به پایگاه های داده رابطه ای، تولید اعداد شبه تصادفی، محاسبات با اعشار با دقت دلخواه، [113] دستکاری عبارات منظم، و آزمایش واحد است.
برخی از بخشهای کتابخانه استاندارد با مشخصات پوشش داده میشوند (به عنوان مثال، اجرای رابط دروازه سرور وب (WSGI) از wsgiref
PEP 333 [114] پیروی میکند)، اما اکثر ماژولها اینطور نیستند. آنها با کد، اسناد داخلی و مجموعه آزمایشی آنها مشخص می شوند. با این حال، از آنجایی که اکثر کتابخانههای استاندارد کد پایتون چند پلتفرمی هستند، تنها چند ماژول برای پیادهسازیهای مختلف نیاز به تغییر یا بازنویسی دارند.
از مارس 2021، فهرست بسته پایتون (PyPI)، مخزن رسمی نرم افزار شخص ثالث پایتون، حاوی بیش از 290000 بسته [115] با طیف وسیعی از عملکردها، از جمله:
- اتوماسیون
- تحلیل داده ها
- پایگاه داده
- مستندات
- رابط کاربر گرافیکی
- پردازش تصویر
- فراگیری ماشین
- اپلیکیشن موبایل
- چند رسانه ای
- شبکه های کامپیوتری
- محاسبات علمی
- رئیس سیستم
- چارچوب تست
- پردازش متن
- چارچوب وب
- خراش دادن وب
محیط توسعه
اکثر پیادهسازیهای پایتون (از جمله CPython) شامل یک حلقه خواندن-ارزیابی-چاپ (REPL) هستند که به آنها اجازه میدهد به عنوان یک مفسر خط فرمان عمل کنند که کاربر را ملزم میکند تا بهطور متوالی عبارات را وارد کند و نتایج را بلافاصله دریافت کند.
پوستههای دیگر، از جمله IDLE و IPython، قابلیتهای اضافی مانند تکمیل خودکار بهبودیافته، حفظ حالت جلسه و برجستهسازی نحو را اضافه میکنند.
علاوه بر محیط توسعه یکپارچه دسکتاپ استاندارد، IDEهای مبتنی بر مرورگر وب نیز وجود دارد. SageMath (با هدف توسعه برنامه های پایتون مرتبط با علوم و ریاضیات)؛ PythonAnywhere، یک IDE مبتنی بر مرورگر و محیط میزبانی. و Canopy IDE، یک IDE تجاری پایتون با تاکید بر محاسبات علمی. [116]
پیاده سازی
پیاده سازی مرجع
CPython پیاده سازی مرجع پایتون است. به زبان C نوشته شده است و استاندارد C89 را با تعدادی از ویژگیهای منتخب C99 برآورده میکند (در نسخههای بعدی C، قدیمی در نظر گرفته میشود؛ [117] [118] CPython شامل پسوندهای C خود است، اما برنامههای افزودنی شخص ثالث محدود به برای مثال، نسخههای قدیمیتر C. را میتوان با C11 یا C++ [119] پیادهسازی کرد. [120] برنامه های پایتون را در یک بایت کد میانی [121] کامپایل می کند که سپس توسط ماشین مجازی آن اجرا می شود. [122]CPython با یک کتابخانه استاندارد بزرگ که در ترکیبی از C و Python بومی نوشته شده است توزیع شده است. برای بسیاری از پلتفرمها، از جمله ویندوز (شروع با پایتون 3.9، نصب کننده پایتون عمداً روی ویندوز 7 و 8 نصب نمیشود؛ [123] [124] ویندوز XP تا پایتون 3.5 پشتیبانی میشد) و اکثر سیستمهای مدرن یونیکس مانند در دسترس است. از جمله macOS (و Apple M1 Mac با نصبکنندههای آزمایشی از Python 3.9.1) و پشتیبانی غیر رسمی مانند VMS. [125] قابلیت حمل پلت فرم یکی از اولویت های اولیه آن بود، [126] در طول جدول زمانی پایتون 1 و 2، حتی OS/2 و Solaris نیز پشتیبانی می شدند. [127] پشتیبانی از بسیاری از سیستم عامل ها از آن زمان حذف شده است.
سایر پیاده سازی ها
- PyPy یک مفسر سریع و سازگار Python 2.7 و 3.6 است. [128] کامپایلر بهموقع آن نسبت به CPython بهبود قابل توجهی را در سرعت به ارمغان میآورد، اما بسیاری از کتابخانههای نوشته شده به زبان C را نمیتوان با آن استفاده کرد. [129]
- پایتون Stackless یکی از فورک های مهم CPython است که microthread ها را پیاده سازی می کند. از پشته تماس به روشی مشابه استفاده نمی کند، بنابراین به برنامه های همزمان اجازه می دهد. همچنین یک نسخه بدون پشته از PyPy وجود دارد. [130]
- MicroPython و CircuitPython انواعی هستند که برای میکروکنترلرهای Python 3 از جمله Lego Mindstorms EV3 بهینه شده اند. [131]
- پایتون گونه ای از زمان اجرا پایتون است که از کامپایل به موقع برای سرعت بخشیدن به اجرای برنامه های پایتون استفاده می کند. [132]
- Cinder یک فورک عملکرد محور از CPython 3.8 است که شامل تعدادی بهینهسازی، از جمله ذخیرهسازی درونی بایت کد، ارزیابی مشتاقانه برنامههای مشترک، یک روش در یک زمان JIT و یک کامپایلر آزمایشی بایت کد است. [133]
اجرای پشتیبانی نشده
سایر کامپایلرهای پایتون به موقع توسعه یافته اند، اما اکنون پشتیبانی نمی شوند:
- گوگل در سال 2009 پروژهای به نام Unladen Swallow را آغاز کرد که هدف آن این بود که مفسر پایتون را با استفاده از LLVM تا پنج برابر سریعتر کند و قابلیت چند رشتهای آن را برای مقیاسبندی به هزاران هسته، [134] در حالی که مفسرهای رایج جهانی را پیادهسازی میکرد. قفل شده بود. ،
- Psyco یک کامپایلر تخصصی بسته بهموقع است که با CPython ادغام میشود و بایت کد را در زمان اجرا به کد ماشین تبدیل میکند. کد منتشر شده مخصوص انواع داده های خاص است و سریعتر از کد استاندارد پایتون است. Psyco از Python 2.7 یا بالاتر پشتیبانی نمی کند.
- PyS60 یک مترجم پایتون 2 برای تلفن های همراه سری 60 بود که توسط نوکیا در سال 2005 منتشر شد. چندین ماژول از کتابخانه استاندارد و چند ماژول اضافی را برای ادغام با سیستم عامل سیمبین پیاده سازی کرد. نوکیا N900 همچنین از پایتون به همراه کتابخانه ویجت GTK پشتیبانی می کند و به برنامه ها اجازه می دهد تا روی دستگاه مورد نظر نوشته و اجرا شوند. [135]
متقابل کامپایلر برای زبان های دیگر
چندین کامپایلر برای زبان های شی سطح بالا وجود دارد، یا پایتون نامحدود، زیرمجموعه ای محدود از پایتون، یا زبانی شبیه پایتون به عنوان زبان مبدأ:
- Cython از Python 2.7 به C (یک ابرمجموعه) کامپایل می شود (در حالی که کد به دست آمده برای مثال با Python 3 و C++ نیز قابل استفاده است).
- Nuitka پایتون را در C++ کامپایل می کند. [136]
- پایتون از پایتون 3 به بعد در زیر مجموعه ای از C++ کامپایل می شود. [137] [138] [139 ]
- Pyrex (آخرین نسخه در سال 2010) و Shade Skin (آخرین نسخه در سال 2013) به ترتیب در C و C ++ گردآوری شده اند.
- Grumpy گوگل (آخرین نسخه در سال 2017) پایتون 2 را به Go منتقل می کند. [140] [141] [142]
- IronPython (اکنون توسط مایکروسافت رها شده است) به برنامه های Python 2.7 اجازه می دهد تا در زمان اجرا زبان مشترک دات نت اجرا شوند. [143]
- Jython Python 2.7 را در بایت کد جاوا کامپایل می کند و به کتابخانه های جاوا اجازه می دهد از برنامه های پایتون استفاده شوند. [144]
- MyHDL یک زبان توصیف سخت افزار مبتنی بر پایتون (HDL) است که کد MyHDL را به کد Verilog یا VHDL تبدیل می کند.
- Numba از LLVM برای کامپایل زیر مجموعه ای از پایتون به کد ماشین استفاده می کند.
- برایتون، [145] رونوشت [146] [147] و PyJ (آخرین نسخه در سال 2012) پایتون را به جاوا اسکریپت کامپایل می کنند.
- RPython را می توان به C کامپایل کرد و برای ساخت مفسر PyPy پایتون استفاده می شود.
نمایش دادن
مقایسه عملکرد پیاده سازی های مختلف پایتون در بارهای کاری غیر عددی (ترکیبی) در EuroSciPy ’13 ارائه شد. [148] عملکرد پایتون در مقایسه با سایر زبان های برنامه نویسی توسط The Computer Language Benchmark Game محک زده شده است. [149]
توسعه
توسعه پایتون تا حد زیادی از طریق فرآیند پیشنهاد ارتقای پایتون (PEP) انجام میشود، که مکانیزم اولیه برای پیشنهاد ویژگیهای جدید اصلی، جمعآوری اطلاعات جامعه در مورد مسائل، و مستندسازی تصمیمات طراحی پایتون است. [150] سبک کدنویسی پایتون در PEP 8 گنجانده شده است. [151] PEP های عالی توسط انجمن و شورای حاکم پایتون بررسی و نظر داده می شوند. [150]
رشد زبان همزمان با توسعه پیاده سازی مرجع CPython است. لیست پستی پلتفرم اولیه برای توسعه زبان پایتون-dev است. مسائل خاص در ردیاب اشکال Roundup که در bugs.python.org میزبانی شده است مورد بحث قرار می گیرد. [152] توسعه در یک مخزن کد منبع خود میزبانی انجام شد که در اصل Mercurial را اجرا می کرد، تا اینکه پایتون در ژانویه 2017 به GitHub منتقل شد. [153]
نسخههای عمومی CPython در سه نوع عرضه میشوند که در قسمتی از تعداد نسخه افزایش یافته است:
- نسخه های ناسازگار با عقب، که انتظار می رود کد شکسته شود و باید به صورت دستی منتقل شود. قسمت اول شماره نسخه افزایش می یابد. این نسخهها نادر هستند—نسخه 3.0 8 سال پس از نسخه 2.0 منتشر شد.
- انتشارهای اصلی یا «ویژگی» تقریباً هر 18 ماه یکبار اتفاق میافتد، اما انتظار میرود که یک بار در سال با شروع پایتون 3.9، با پذیرش آهنگ انتشار سالانه، انجام شود. [154] [155] آنها تا حد زیادی سازگار هستند اما ویژگی های جدیدی را معرفی می کنند. قسمت دوم شماره نسخه افزایش یافته است. هر نسخه اصلی چندین سال پس از انتشار توسط رفع اشکال پشتیبانی می شود. [156]
- نسخههای رفع اشکال، [157] که هیچ ویژگی جدیدی معرفی نمیکنند، تقریباً هر 3 ماه یکبار اتفاق میافتند و زمانی ایجاد میشوند که تعداد کافی از باگها در بالادست از نسخه قبلی رفع شده باشند. آسیب پذیری های امنیتی نیز در این نسخه ها اصلاح شده است. قسمت سوم و آخر شماره نسخه بزرگ شده است. [157]
چندین کاندید آلفا، بتا و انتشار نیز به عنوان پیش نمایش و برای آزمایش قبل از انتشار نهایی منتشر می شوند. اگرچه برای هر نسخه برنامه زمانی مشخصی وجود دارد، اما اغلب زمانی که کد آماده نیست به تعویق میافتد. تیم توسعه پایتون با اجرای مجموعههای تست واحد بزرگ، وضعیت کد را در طول توسعه نظارت میکند. [158]
کنفرانس آکادمیک اصلی پایتون PyCon است. همچنین برنامه های مشاوره تخصصی پایتون مانند PyLease وجود دارد.
Python 3.10 wstr (در پایتون 3.12 حذف میشود؛ به این معنی که پسوندهای پایتون [159] باید تا آن زمان اصلاح شوند)، [160] و برنامههایی برای افزودن تطبیق الگو به زبان وجود دارد. [161]
API Documentation Generator
ابزارهایی که میتوانند برای APIهای پایتون مستندسازی کنند عبارتند از pydoc (در دسترس به عنوان بخشی از کتابخانه استاندارد)، Sphinx، Pdoc و فورکهای آن، Doxygen و Graphviz و غیره. [162]
نامگذاری
پایتون نام خود را از گروه کمدی بریتانیایی مونتی پایتون گرفته است که خالق پایتون، گیدو ون روسوم، هنگام توسعه زبان از آن لذت برد. مراجع مونتی پایتون اغلب در کد و فرهنگ پایتون ظاهر می شوند. [163] برای مثال، متغیرهای متا نحوی که اغلب در ادبیات پایتون استفاده میشوند، هرزنامه و تخممرغ هستند، به جای foo and bar سنتی. [163] [164] اسناد رسمی پایتون همچنین شامل ارجاعات مختلفی به روالهای مونتی پایتون است. [165] [166]
پیشوند Py- برای نشان دادن اینکه چیزی به پایتون مرتبط است استفاده می شود. نمونه هایی از استفاده از این پیشوند در نام برنامه ها یا کتابخانه های پایتون عبارتند از Pygame که SDL را به پایتون متصل می کند (که معمولاً برای ساخت بازی استفاده می شود). PyQt و PyGTK که به ترتیب Qt و GTK را به پایتون متصل می کنند. و PyPy، یک پیاده سازی پایتون که به صورت بومی در پایتون نوشته شده است.
محبوبیت
از سال 2003، پایتون به طور مداوم در میان ده زبان برنامه نویسی محبوب در فهرست انجمن برنامه نویسی TIOBE قرار گرفته است، جایی که از فوریه 2021 ، سومین زبان محبوب (پس از جاوا و C) است. [167] در سالهای 2007، 2010، 2018 و 2020 به عنوان زبان برنامهنویسی سال (برای “بالاترین افزایش رتبه در یک سال”) انتخاب شد (تنها زبانی که این کار را چهار بار انجام داده است [168] ). [169]
یک مطالعه تجربی نشان داد که زبانهای اسکریپتنویسی، مانند پایتون، برای مشکلات برنامهنویسی شامل دستکاری رشتهها و جستجو در فرهنگ لغت نسبت به زبانهای سنتی، مانند C و جاوا، کارآمدتر هستند و مشخص شد که مصرف حافظه اغلب «بهتر از جاوا و بدون بدتر از C یا C++». [170]
سازمانهای بزرگی که از پایتون استفاده میکنند شامل ویکیپدیا، گوگل، [171] Yahoo! ، [172] سرن، [173] ناسا، [174] فیس بوک، [175] آمازون، اینستاگرام، [176] Spotify [177] و برخی از سازمان های کوچکتر مانند ILM [178] و ITA. [179] سایت شبکه خبری اجتماعی ردیت بیشتر به زبان پایتون نوشته شده بود. [180]
استفاده کنید
پایتون می تواند به عنوان یک زبان برنامه نویسی برای برنامه های کاربردی وب، به عنوان مثال، برای سرورهای وب آپاچی از طریق mod wsgi عمل کند. [181] با رابط دروازه سرور وب، یک API استاندارد برای تسهیل این برنامه ها توسعه یافته است. چارچوب های وب مانند جنگو، Pylons، Pyramid، TurboGears، web2py، Tornado، Flask، Flask و Zope از توسعه دهندگان در طراحی و نگهداری برنامه های کاربردی پیچیده پشتیبانی می کنند. Pyjs و IronPython را می توان برای توسعه برنامه های کاربردی مبتنی بر Ajax در سمت مشتری استفاده کرد. SQLAlchemy را می توان به عنوان نگاشت داده در پایگاه داده های رابطه ای استفاده کرد. Twisted چارچوبی برای برنامهریزی ارتباط بین رایانهها است و (به عنوان مثال) Dropbox از آن استفاده میکند.
کتابخانههایی مانند NumPy، SciPy و Matplotlib امکان استفاده مؤثر از Python را در محاسبات علمی فراهم میکنند، [182] [183] با کتابخانههای تخصصی مانند BioPython و AstroPy که عملکردهای دامنه خاص را ارائه میدهند. SageMath یک سیستم جبر کامپیوتری با رابط نوت بوک قابل برنامه ریزی در پایتون است: کتابخانه آن بسیاری از جنبه های ریاضیات از جمله جبر، ترکیبات، ریاضیات عددی، نظریه اعداد و حساب دیفرانسیل و انتگرال را پوشش می دهد. [184] OpenCV دارای اتصالات پایتون برای بینایی کامپیوتری و پردازش تصویر با مجموعه ای غنی از ویژگی ها است. [185]
پایتون معمولاً در پروژههای هوش مصنوعی و پروژههای یادگیری ماشین با کمک کتابخانههایی مانند TensorFlow، Keras، Pytorch و یادگیری Scikit استفاده میشود. [186] [187] [188] [189] پایتون به عنوان یک زبان برنامه نویسی با معماری مدولار، نحو ساده و ابزارهای پردازش متن غنی، اغلب برای پردازش زبان طبیعی استفاده می شود. [190]
پایتون با موفقیت به عنوان یک زبان برنامه نویسی در بسیاری از محصولات نرم افزاری جاسازی شده است، از جمله نرم افزارهای روش اجزای محدود مانند Abaqus، مدل ساز پارامتری سه بعدی مانند FreeCAD، بسته های انیمیشن سه بعدی مانند 3DS Max، Blender، Cinema 4D، Lightwave، Houdini، Maya، modo، MotionBuilder، Softimage، Visual Effects Compositor Nuke، برنامههای تصویربرداری دوبعدی مانند GIMP، [191] Inkscape، Scribus و Paint Shop Pro، [192] و برنامههای نتنویسی موسیقی مانند Scorewriter و Capella. دیباگر گنو از پایتون به عنوان یک چاپگر زیبا برای نشان دادن ساختارهای پیچیده مانند ظروف ++C استفاده می کند. Esri پایتون را به عنوان بهترین گزینه برای نوشتن اسکریپت در ArcGIS تبلیغ می کند. [193] همچنین در چندین بازی ویدیویی استفاده شده است، [194][ 195 ] و به عنوان اولین زبان از سه زبان برنامه نویسی موجود در Google App Engine، دو زبان دیگر جاوا و Go پذیرفته شده است. [196]
پایتون به عنوان یک جزء استاندارد در بسیاری از سیستم عامل ها گنجانده شده است. این سیستم با اکثر توزیعهای لینوکس عرضه میشود، [197] AmigaOS 4 (با استفاده از Python 2.7)، FreeBSD (به عنوان یک بسته)، NetBSD، OpenBSD (به عنوان یک بسته) و macOS و خط فرمان (ترمینال) میتواند از آن استفاده شود. بسیاری از توزیعهای لینوکس از نصبکنندههای نوشته شده در پایتون استفاده میکنند: اوبونتو از نصبکننده Ubiquity استفاده میکند، در حالی که Red Hat Linux و Fedora از نصبکننده Anaconda استفاده میکنند. جنتو لینوکس از Python در سیستم مدیریت بسته خود یعنی Portage استفاده می کند.
پایتون به طور گسترده در صنعت امنیت اطلاعات از جمله توسعه اکسپلویت استفاده می شود. [198] [199]
بیشتر نرم افزار Sugar برای One Laptop Per Child XO که اکنون در Sugar Labs توسعه یافته است، به زبان Python نوشته شده است. [200] پروژه کامپیوتری تک برد Raspberry Pi پایتون را به عنوان زبان برنامه نویسی کاربر اصلی خود پذیرفت.
LibreOffice شامل پایتون است و قصد دارد جاوا را با پایتون جایگزین کند. ارائهدهنده برنامهنویسی پایتون آن یک ویژگی اصلی [201] از نسخه 4.0 از 7 فوریه 2013 است.
زبان های تحت تاثیر پایتون
طراحی و فلسفه پایتون بر بسیاری از زبان های برنامه نویسی دیگر تأثیر گذاشته است:
- Boo از تورفتگی، یک نحو مشابه و یک مدل شی مشابه استفاده می کند. [202]
- Cobra از تورفتگی و نحو مشابه استفاده می کند و سند تأیید آن پایتون را به عنوان اولین زبانی که بر آن تأثیر گذاشته است فهرست می کند. [203]
- CoffeeScript، یک زبان برنامه نویسی که جاوا اسکریپت را به صورت متقابل کامپایل می کند، دارای نحو الهام گرفته شده از پایتون است.
- ECMAScript/JavaScript Iterators و Generators را از Python قرض گرفته است. [204]
- GDScript، یک زبان برنامه نویسی تا حد زیادی شبیه پایتون، در موتور بازی گودو تعبیه شده است. [205]
- Go برای “سرعت کار در یک زبان پویا مانند Python” طراحی شده است [206] و برای برش آرایه ها، نحو مشابهی دارد.
- گرووی از تمایل به آوردن فلسفه طراحی پایتون به جاوا الهام گرفت. [207]
- جولیا به گونه ای طراحی شده بود که «به اندازه پایتون برای برنامه نویسی عمومی قابل استفاده باشد». [26]
- Nim از تورفتگی و نحو مشابه استفاده می کند. [208]
- خالق روبی، یوکیهیرو ماتسوموتو، گفته است: “من یک زبان برنامه نویسی می خواستم که قوی تر از Perl و شی گراتر از پایتون باشد. بنابراین تصمیم گرفتم زبان خودم را طراحی کنم.” [209]
- Swift، یک زبان برنامه نویسی که توسط اپل توسعه یافته است، دارای نحوی الهام گرفته از پایتون است. [210]
شیوه های توسعه پایتون توسط زبان های دیگر نیز تقلید شده است. به عنوان مثال، تمرین نیاز به سندی برای توصیف مسائل پیرامون و توجیه تغییرات زبان (در پایتون، یک PEP) در Tcl، [211] Erlang، [212] و Swift نیز استفاده میشود. [213]
همه را ببین
- نحو و معناشناسی پایتون
- پیپ (مدیر بسته)
- برنامه نویسی دیفرانسیل
ارجاع
- ↑ «سؤالات متداول عمومی پایتون – اسناد پایتون 3.9.2». docs.python.org . بازبینی شده در 28 مارس 2021 .
- ↑ A B Guttag، John V. (12 اوت 2016). مقدمهای بر محاسبات و برنامهنویسی با استفاده از پایتون: با کاربردهایی برای درک دادهها . مطبوعات MIT. isbn 978-0-262-52962-4،
- ^ a b “Python 3.8.10، 3.9.5 و 3.10.0b1 اکنون در دسترس هستند”. 3 مه 2021 . بازبینی شده در 4 مه 2021 .
- ↑ «چرا پایتون یک زبان پویا و یک زبان قوی تایپ شده است – پایتون ویکی». wiki.python.org _ بازبینی شده در 27 ژانویه 2021 .
- ↑ “PEP 483 – نظریه نکات نوع”. python.org _
- ↑ «دانلود پایتون». python.org _ بازبینی شده در 24 مه 2021 .
- ^ پسوند فایل .pyo در پایتون 3.5 حذف شد. PEP 0488 را ببینید
- ↑ هولث، مور (30 مارس 2014). “PEP 0441 – بهبود پشتیبانی از برنامه زیپ پایتون” . بازبینی شده در 12 نوامبر 2015 .
- ↑ «زبان استارلارک» . بازبینی شده در 25 مه 2019 .
- ^ a b “چرا پایتون در وهله اول ایجاد شد؟” ، سوالات متداول پایتون بنیاد نرم افزار پایتون بازیابی شده در 22 مارس 2007 .
- ↑ «دستورالعمل مرجع ADA 83 (توسعه بیانیه)».
- ↑ کوچلینگ، اندرو ام. (22 دسامبر 2006). “مصاحبه با گیدو ون روسوم (ژوئیه 1998)”. AMK.CA. _ بایگانی شده از نسخه اصلی در 1 مه 2007 . بازیابی شده در 12 مارس 2012 .
- ^ A B “itertools – توابعی که یک تکرار کننده برای حلقه کارآمد ایجاد می کنند – Python 3.7.1 Documentation”. docs.python.org .
- ↑ ون روسوم، گیدو (1993). “معرفی پایتون برای برنامه نویسان یونیکس/سی”. مجموعه مقالات NLUUG Najaarsconferentie (گروه کاربر یونیکس هلندی) . SiteSeerX 10.1.1.38.22023 .
حتی اگر طراحی C از ایده آل فاصله زیادی دارد، تأثیر آن بر پایتون قابل توجه است.
- ^ a b “کلاس ها”. آموزش پایتون . بنیاد نرم افزار پایتون بازبینی شده در 20 فوریه 2012 .
این C++ و Modula-3 است.
سیستم کلاس موجود در ترکیبی از
- ^ لوند، فردریک. “تماس با شی”. effbot.org _ بازبینی شده در 21 نوامبر 2017 .
“CLU” را با “Python”، “Record” را با “instance” و “Procedure” را با “function or Method” جایگزین کنید، و توضیح بسیار دقیقی از مدل شی پایتون دریافت خواهید کرد.
- ^ سیمیوناتو، میشل. “Python 2.3 Method Resolution Order”. بنیاد نرم افزار پایتون
روش C3 هیچ ارتباطی با پایتون ندارد، زیرا توسط افرادی که روی Dylan کار میکنند اختراع شده است و در مقالهای برای Lispers توضیح داده شده است.
- ↑ Kuchling، AM “Functional Programming Howto”. مستندات پایتون نسخه 2.7.2 . بنیاد نرم افزار پایتون بازبینی شده در 9 فوریه 2012 .
- ^ شیمناور، نیل؛ پیترز، تیم؛ هتلند، مگنوس لای (18 مه 2001). “PEP 255 – ژنراتورهای ساده”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 9 فوریه 2012 .
- ^ اسمیت، کوین دی. جوت، جیم جی. مونتانارو، پرش. باکستر، آنتونی (2 سپتامبر 2004). “PEP 318 – تزئینات برای عملکردها و روش ها”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 24 فوریه 2012 .
- ^ “ابزارهای کنترل جریان بیشتر”. مستندات پایتون 3 . بنیاد نرم افزار پایتون بازبینی شده در 24 جولای 2015 .
- ↑ «کافی اسکریپت». coffeescript.org _
- ↑ «آموزش زبان برنامه نویسی جن» . بازبینی شده در 28 فوریه 2020 .
- ↑ «اثرات پرل و پایتون در جاوا اسکریپت». www.2ality.com . 24 فوریه 2013 . بازبینی شده در 15 مه 2015 .
- ↑ راوشمایر، اکسل. “فصل 3: ماهیت جاوا اسکریپت؛ مفاهیم”. اوریلی، صحبت از جاوا اسکریپت . بازبینی شده در 15 مه 2015 .
- ^ A B “چرا جولیا را خلق کردیم”. وب سایت جولیا فوریه 2012 . بازبینی شده در 5 ژوئن 2014 .
ما چیزی به اندازه پایتون برای برنامه نویسی عمومی می خواهیم […]
- ↑ تیم حلقه (4 دسامبر 2017). “حلقه و زبانهای دیگر”. ring-lang.net . رینگ لنگ.
- ↑ بینی، اولا (2007). پروژه های عملی JRuby on Rails Web 2.0: آوردن Ruby on Rails به پلتفرم جاوا . برکلی: اپی پرس. ص 3. isbn 978-1-59059-881-8،
- ↑ لاتنر، کریس (3 ژوئن 2014). “صفحه اصلی کریس لاتنر”. کریس لاتنر . بازبینی شده در 3 ژوئن 2014 .
زبان سوئیفت محصول تلاش خستگیناپذیر تیمی از متخصصان زبان، استادان مستندسازی، نینجاهای بهینهسازی کامپایلر و یک گروه آزمایشی داخلی بسیار مهم است که برای کمک به اصلاح و آزمایش ایدهها، بازخورد ارائه کردند.
البته، از تجربیاتی که بسیاری از زبانهای دیگر در این زمینه به دست آوردهاند، با استفاده از ایدههایی از Objective-C، Rust، Haskell، Ruby، Python، C#، CLU و بسیاری دیگر که فهرست شدهاند، بهره زیادی برده است.
- ^ کوهمن، دیو. “کتاب پایتون: تمرین های ابتدایی پایتون، پایتون پیشرفته و پایتون”. بخش 1.1. بایگانی شده از نسخه اصلی (PDF) در 23 ژوئن 2012.
- ↑ «درباره پایتون». بنیاد نرم افزار پایتون بازبینی شده در 24 آوریل 2012 . بخش دوم «طرفداران پایتون از عبارت «باتریها گنجانده شده» برای توصیف کتابخانه استاندارد استفاده میکنند که شامل همه چیز از پردازش ناهمزمان گرفته تا فایلهای ZIP است.
- ↑ Rossum, Guido Van (20 ژانویه 2009). “تاریخچه پایتون: جدول زمانی مختصر پایتون”. تاریخچه پایتون . بازبینی شده در 5 مارس 2021 .
- ↑ پترسون، بنجامین (20 آوریل 2020). “Python Insider: Python 2.7.18، نسخه نهایی Python 2”. Python Insider . بازبینی شده در 27 آوریل 2020 .
- ↑ TIOBE Index (دسامبر 2020). “شاخص TIOBE برای دسامبر 2020”. TIOBE.com _ بازیابی شده در 20 دسامبر 2020 .
- ^ “شاخص | TIOBE – شرکت کیفیت نرم افزار”. www.tiobe.com . بازبینی شده در 2 فوریه 2021 .
پایتون برنده جایزه زبان برنامه نویسی سال TIOBE شد!
این چهارمین بار در تاریخ است که یک رکورد است!
این عنوان به زبان برنامه نویسی داده می شود که در یک سال بیشترین محبوبیت را به دست آورده است.
- ↑ «Stack Overflow Developer Survey 2020». سرریز پشته . بازبینی شده در 5 مارس 2021 .
- ↑ «وضعیت اکوسیستم توسعهدهنده در اینفوگرافیک ۲۰۲۰». JetBrains: ابزارهای توسعه دهنده برای حرفه ای ها و تیم ها . بازبینی شده در 5 مارس 2021 .
- ↑ «محبوبیت شاخص زبان برنامه نویسی PYPL». pypl.github.io . بازبینی شده در 26 مارس 2021 .
- ↑ A B Venners، Bill (13 ژانویه 2003). “ساخت پایتون”. توسعه دهنده Artima . آرتیما . بازیابی شده در 22 مارس 2007 .
- ↑ Van Rossum, Guido (29 اوت 2000). “SETL (بود: زمزمه کردن در مورد لفظ محدوده)”. python-dev (لیست پستی) . بازیابی شده در 13 مارس 2011 .
- ↑ Van Rossum، Guido (20 ژانویه 2009). “خط زمانی مختصر پایتون”. تاریخچه پایتون . بازیابی شده در 20 ژانویه 2009 .
- ↑ فرچایلد، کارلی (12 ژوئیه 2018). «گویدو ون روسوم از نقش دیکتاتور خیرخواه پایتون برای زندگی کنار میرود». مجله لینوکس . بازبینی شده در 13 جولای 2018 .
- ↑ «PEP 8100». بنیاد نرم افزار پایتون بازبینی شده در 4 مه 2019 .
- ↑ «PEP 13 – حاکمیت زبان پایتون». python.org _ بازبینی شده در 26 مه 2021 .
- ^ کوچلینگ، AM; زادکا، موشه (16 اکتبر 2000). “چیزهای جدید در Python 2.0”. بنیاد نرم افزار پایتون بازبینی شده در 11 فوریه 2012 .
- ↑ «نسخه پایتون 3.0». بنیاد نرم افزار پایتون بازیابی شده در 8 جولای 2009 .
- ↑ Van Rossum, Guido (5 آوریل 2006). “PEP 3000 – Python 3000”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بایگانی شده از نسخه اصلی در 3 مارس 2016 . بازیابی شده در 27 ژوئن 2009 .
- ^ “2to3 – ترجمه خودکار کد پایتون 2 به 3”. docs.python.org . بازبینی شده در 2 فوریه 2021 .
- ↑ “PEP 373 – Python 2.7 Release Schedule”. python.org _ بازیابی شده در 9 ژانویه 2017 .
- ↑ “PEP 466 – بهبود امنیت شبکه برای Python 2.7.x”. python.org _ بازیابی شده در 9 ژانویه 2017 .
- ↑ «Sunsetting Python 2». python.org _ بازبینی شده در 22 سپتامبر 2019 .
- ↑ “PEP 373 – Python 2.7 Release Schedule”. python.org _ بازبینی شده در 22 سپتامبر 2019 .
- ↑ «راهنمای توسعهدهنده پایتون – راهنمای توسعهدهنده پایتون». devguide.python.org . بازبینی شده در 17 دسامبر 2019 .
- ↑ لانگا، لوکاس (19 فوریه 2021). Python Insider: Python 3.9.2 و 3.8.8 اکنون در دسترس هستند. Python Insider . بازبینی شده در 26 فوریه 2021 .
- ↑ “پورتال مشتریان کلاه قرمزی – دسترسی 24×7 به پشتیبانی و دانش”. access.redhat.com . بازبینی شده در 26 فوریه 2021 .
- ↑ «CVE – CVE-2021-3177». cve.mitre.org . بازبینی شده در 26 فوریه 2021 .
- ↑ «CVE – CVE-2021-23336». cve.mitre.org . بازبینی شده در 26 فوریه 2021 .
- ↑ The Ken Gang Ltd. “Metaclasses Python: چه کسی؟ چرا؟ چه زمانی؟” (PDF) . بایگانی شده از نسخه اصلی (PDF) در 30 مه 2009 . بازیابی شده در 27 ژوئن 2009 .
- ↑ «3.3. نامهای روش خاص». مرجع زبان پایتون بنیاد نرم افزار پایتون بازیابی شده در 27 ژوئن 2009 .
- ↑ «PyDBC: پیششرطهای متد، شرایط پسشرط متد و متغیرهای کلاس برای پایتون» . بازبینی شده در 24 سپتامبر 2011 .
- ↑ «Contracts for Python» . بازبینی شده در 24 سپتامبر 2011 .
- ↑ «PyDatalog» . بازبینی شده در 22 جولای 2012 .
- ↑ «بسط و جاسازی مفسر پایتون: زمینه اهمیت دارد». Docs.python.org . بازیابی شده در 5 ژوئن 2020 .
از آنجایی که پایتون
به شدت از و استفاده می کند
، به یک استراتژی برای جلوگیری از نشت حافظه و همچنین استفاده از حافظه آزاد نیاز دارد.
روش انتخاب شده
شمارش مرجع
نامیده می شود .
malloc()
free()
- ↑ A B Hettinger، Raymond (30 ژانویه 2002). “PEP 289 – عبارات ژنراتور”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 19 فوریه 2012 .
- ^ “6.5 itertools – توابعی که یک تکرار کننده برای حلقه زدن کارآمد ایجاد می کنند”. Docs.python.org . بازبینی شده در 22 نوامبر 2016 .
- ↑ A B Peters, Tim (19 اوت 2004). “PEP 20 – ذن پایتون”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازیابی شده در 24 نوامبر 2008 .
- ^ مارتلی، الکس؛ ریونسکرافت، آنا؛ آشر، دیوید (2005). کتاب آشپزی پایتون، ویرایش دوم. رسانه اوریلی ص 230. isbn 978-0-596-00797-3،
- ↑ «فرهنگ پایتون». eBay _ اصل بایگانی شده از 21 ژانویه 2014، 30 ژانویه 2014.
- ↑ «سؤالات متداول عمومی پایتون». پایتون نسخه 2.7.3 مستندات . Docs.python.org . بازبینی شده در 4 ژوئن 2020 .
- ↑ «۱۵ روشی که پایتون یک نیروی قدرتمند در وب است».
- ↑ “8.18. pprint – چاپگر زیبای داده – مستندات Python 3.8.3”. docs.python.org .
- ↑ کلارک، رابرت (26 آوریل 2019). “چگونه پایتونیک باشیم و چرا باید اهمیت دهیم”. متوسط _
- ↑ “Code Style – The Hitchhiker’s Guide to Python”. docs.python-guide.org .
- ^ گودگار، دیوید. “Code Like a Pythonista: Python اصطلاحی”. بایگانی شده از نسخه اصلی در 27 مه 2014 . بازیابی شده در 24 مارس 2009 .
- ↑ «چگونه مانند پایتونیستا فکر کنیم».
- ↑ “آیا پایتون زبان خوبی برای یک برنامه نویس مبتدی است؟” ، سوالات متداول پایتون بنیاد نرم افزار پایتون بازیابی شده در 21 مارس 2007 .
- ↑ “افسانه ها در مورد تورفتگی در پایتون”. seknetics.d . بازبینی شده در 19 آوریل 2011 .
- ↑ «PEP 8 – Style Guide for Python Code». python.org _
- ↑ «برترینها: Python 2.5». python.org _
- ↑ Van Rossum, Guido (22 آوریل 2009). “حذف بازگشت دم”. Neopythonic.blogspot.be . بازیابی شده در 3 دسامبر 2012 .
- ↑ Van Rossum، Guido (9 فوریه 2006). “طراحی زبان فقط حل معما نیست”. انجمن آرتیما . آرتیما . بازیابی شده در 21 مارس 2007 .
- ↑ ون روسوم، گیدو؛ ابی، فیلیپ جی. (10 مه 2005). “PEP 342 – کوروتین ها از طریق ژنراتورهای پیشرفته”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 19 فوریه 2012 .
- ↑ «PEP 380». python.org _ بازیابی شده در 3 دسامبر 2012 .
- ↑ «پارتیشن». python.org _
- ^ “PEP 0465 – یک عملگر infix اختصاصی برای ضرب ماتریس”. python.org _ بازیابی شده در 1 ژانویه 2016 .
- ↑ «Python 3.5.1 Release and Changelog». python.org _ بازیابی شده در 1 ژانویه 2016 .
- ↑ «چیزهای جدید در پایتون 3.8» . بازبینی شده در 14 اکتبر 2019 .
- ^ “فصل 15. عبارات – 15.21.1. عملگرهای برابری عددی == و !=”. شرکت اوراکل . بازبینی شده در 28 اوت 2016 .
- ^ “فصل 15. عبارات – 15.21.3. عملگرهای برابری مرجع == و !=”. شرکت اوراکل . بازبینی شده در 28 اوت 2016 .
- ↑ ون روسوم، گیدو؛ هتینگر، ریموند (7 فوریه 2003). “PEP 308 – عبارات شرطی”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 13 جولای 2011 .
- ↑ «4. انواع داخلی – اسناد پایتون 3.6.3rc1». python.org _ بازیابی شده در 1 اکتبر 2017 .
- ↑ “5.3. Tuples and Sequences – Python 3.7.1rc2 Documentation”. python.org _ بازبینی شده در 17 اکتبر 2018 .
- ^ a b “PEP 498 — Literal String Interpolation”. python.org _ بازبینی شده در 8 مارس 2017 .
- ^ “چرا باید “خود” به صراحت در تعاریف و فراخوانی متدها استفاده شود؟” ، سوالات متداول طراحی و تاریخچه بنیاد نرم افزار پایتون بازبینی شده در 19 فوریه 2012 .
- ↑ «مرجع زبان پایتون، جلد 3.3. کلاسهای سبک جدید و کلاسیک، برای نسخه 2.7.1» . بازیابی شده در 12 ژانویه 2011 .
- ↑ «نکات تایپ برای پایتون». lwn.net. 24 دسامبر 2014 . بازبینی شده در 5 مه 2015 .
- ^ “mypy – تایپ استاتیک جایگزین برای Python” . بازبینی شده در 28 ژانویه 2017 .
- ↑ “15. محاسبات ممیز شناور: مسائل و محدودیت ها – اسناد پایتون 3.8.3”. docs.python.org . بازبینی شده در 6 ژوئن 2020 .
امروزه (نوامبر 2000) تقریباً همه ماشینها از محاسبات ممیز شناور IEEE-754 استفاده میکنند و تقریباً همه پلتفرمها شناورهای Python را به IEEE-754 «دقت مضاعف» ترسیم میکنند.
- ↑ زادکا، موشه؛ ون روسوم، گیدو (11 مارس 2001). “PEP 237 – ادغام اعداد صحیح طولانی و اعداد صحیح”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 24 سپتامبر 2011 .
- ↑ «انواع ضمنی» . بازیابی شده در 3 اکتبر 2019 .
- ^ “PEP 465 – یک عملگر اختصاصی infix برای ضرب ماتریس”. python.org _
- ^ ا ب زادکا، موشه؛ ون روسوم، گیدو (11 مارس 2001). “PEP 238 – تغییر اپراتور بخش”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 23 اکتبر 2013 .
- ↑ «چرا طبقات تقسیم عدد صحیح پایتون» . بازبینی شده در 25 اوت 2010 .
- ↑ «Round»، کتابخانه استاندارد پایتون، نسخه 3.2، 2: توابع داخلی ، بازیابی شده در 14 اوت 2011
- ↑ «Round»، کتابخانه استاندارد پایتون، نسخه ۲.۷، ۲: توابع داخلی ، بازیابی شده در ۱۴ اوت ۲۰۱۱
- ↑ بیزلی، دیوید ام. (2009). مرجع Python Essentials (ویرایش چهارم). ص 66.
- ↑ کرنیگان، برایان دبلیو. ریچی، دنیس ام. (1988). زبان برنامه نویسی C (ویرایش دوم). ص 206.
- ↑ باتیستا، فایسوندو. “PEP 0327 – انواع داده اعشاری”. python.org _ بازبینی شده در 26 سپتامبر 2015 .
- ↑ «چیزهای جدید در Python 2.6 – Python v2.6. docs.python.org . بازبینی شده در 26 سپتامبر 2015 .
- ↑ «۱۰ دلیل برای تحقیقات پایتون (و برخی از دلایلی که این کار را نمی کند) – هویت کوپکه». www.stat.washington.edu . بازبینی شده در 3 فوریه 2019 .
- ↑ شل، اسکات (17 ژوئن 2014). “مقدمه ای بر پایتون برای محاسبات علمی” (PDF) . بازبینی شده در 3 فوریه 2019 .
- ↑ Piotrowski، Przemysloe (ژوئیه 2006). “ساخت یک محیط توسعه سریع وب برای صفحات سرور پایتون و اوراکل”. شبکه فناوری اوراکل اوراکل . بازیابی شده در 12 مارس 2012 .
- ↑ باتیستا، فایسوندو (17 اکتبر 2003). “PEP 327 – انواع داده اعشاری”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازیابی شده در 24 نوامبر 2008 .
- ↑ ابی، فیلیپ جی. (7 دسامبر 2003). “PEP 333 – Python Web Server Gateway Interface v1.0”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 19 فوریه 2012 .
- ^ دبیل، اریک. “ماژول مهم است”. محاسبه ماژول . بازبینی شده در 2 فوریه 2021 .
- ^ هیجان، سایبان. “سایبان”. www.en think.com . بازبینی شده در 20 اوت 2016 .
- ^ “Mailman 3 چرا ما اجازه استفاده از C11 را نمی دهیم؟ – python-dev – python.org”. mail.python.org _ بازیابی شده در 1 مارس 2021 .
- ↑ «مشکل 35473: کامپایلر اینتل (ICC) به طور کامل از ویژگی های C11، از جمله ردیاب اتم-پایتون پشتیبانی نمی کند». bugs.python.org . بازیابی شده در 1 مارس 2021 .
- ↑ “4. ساخت برنامه های افزودنی C و C++ – مستندات Python 3.9.2”. docs.python.org . بازیابی شده در 1 مارس 2021 .
- ↑ ون روسوم، گیدو (5 ژوئن 2001). “PEP 7 – Style Guide for C Code”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازیابی شده در 24 نوامبر 2008 .
- ↑ «کد بایت CPython». Docs.python.org . بازبینی شده در 16 فوریه 2016 .
- ↑ «Python 2.5 Internals» (PDF) . بازبینی شده در 19 آوریل 2011 .
- ↑ “Changelog – Python 3.9.0 Documentation”. docs.python.org . بازبینی شده در 8 فوریه 2021 .
- ↑ «دانلود پایتون». python.org _ بازبینی شده در 13 دسامبر 2020 .
- ↑ «تاریخچه [vmspython]». www.vmspython.org . بازبینی شده در 4 دسامبر 2020 .
- ↑ «مصاحبه با گیدو ون روسوم». Orelie.com _ بازیابی شده در 24 نوامبر 2008 .
- ↑ «دانلود پایتون برای پلتفرمهای دیگر». python.org _ بازبینی شده در 4 دسامبر 2020 .
- ↑ «سازگاری با PyPY». Pypy.org _ بازیابی شده در 3 دسامبر 2012 .
- ↑ «مقایسه سرعت بین CPython و Pypy». سرعت . pypy.org _ بازیابی شده در 3 دسامبر 2012 .
- ↑ «ویژگیهای بدون پشته در سطح برنامه – PyPy 2.0. Doc.pypy.org . بازبینی شده در 17 جولای 2013 .
- ↑ «Python-for-EV3». آموزش لگو بازبینی شده در 17 آوریل 2019 .
- ↑ یگلاپ، سردار (29 اکتبر 2020). “پیستون برای سرعت بخشیدن به پایتون از مرده باز می گردد.” دنیای اطلاعات بازبینی شده در 26 ژانویه 2021 .
- ↑ «سیندر: چنگال عملکرد محور CPython در اینستاگرام» . بازبینی شده در 4 مه 2021 .
- ↑ «طرحهای بهینهسازی پایتون». میزبانی پروژه گوگل 15 دسامبر 2009 . بازبینی شده در 24 سپتامبر 2011 .
- ↑ «Python on Nokia N900». هندسه تصادفی . 29 آوریل 2010.
- ↑ “خانه نویتکا | خانه نویتکا”. nuitka.net . بازبینی شده در 18 اوت 2017 .
- ↑ مرزی، اولیویه (24 ژانویه 2019). “Python: Python در C++ Speed!” ، متوسط _
- ↑ «Python – Python 0.9.5 Documentation». python.readthedocs.io .
- ^ https://conference.scipy.org/proceedings/scipy2013/html/pdfs/guelton.pdf
- ↑ «Google/Grumpy». 10 آوریل 2020 – از طریق GitHub.
- ↑ «پروژه ها». opensource.google .
- ^ در سانفرانسیسکو، توماس کلیبرن. “کد Grumpy گوگل پایتون گو را می سازد”. www.thereregister.com .
- ↑ «IronPython.net/». IronPython.net . بازبینی شده در 22 آوریل 2021 .
- ↑ «سؤالات متداول جیتون». www.jython.org . بازبینی شده در 22 آوریل 2021 .
- ↑ «برایتان». brythan.info . بازیابی شده در 21 ژانویه 2021 .
- ^ “رونویسی – پایتون در مرورگر”. transcrypt.org _ بازیابی شده در 22 دسامبر 2020 .
- ↑ «رونویسی: آناتومی پایتون به کامپایلر جاوا اسکریپت». چرا اطلاعات ؟
- ↑ موری، ریکاردو (2013). نمایش زمان اجرا پایتون در کد علمی غیر عددی . کنفرانس اروپایی پایتون در علم (EuroSciPy). arxiv : 1404.6388 . bibcode: 2014arXiv1404.6388M.
- ↑ «بازی معیار زبان رایانه» . بازبینی شده در 30 آوریل 2020 .
- ^ a b ورشو، بری; هیلتون، جرمی؛ گودگار، دیوید (13 ژوئن 2000). “PEP 1 – اهداف و دستورالعمل های PEP”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازبینی شده در 19 آوریل 2011 .
- ↑ «PEP 8 – Style Guide for Python Code». python.org _
- ^ کانن، برت. “Guido، برخی از افراد، و یک لیست پستی: Python چگونه توسعه می یابد”. python.org _ بنیاد نرم افزار پایتون بایگانی شده از نسخه اصلی در 1 ژوئن 2009 . بازیابی شده در 27 ژوئن 2009 .
- ↑ «راهنمای توسعهدهنده پایتون – راهنمای توسعهدهنده پایتون». devguide.python.org .
- ↑ «PEP 602 – چرخه انتشار سالانه برای پایتون». python.org _ بازبینی شده در 6 نوامبر 2019 .
- ↑ «تغییر آهنگ انتشار پایتون [LWN.net]». lwn.net _ بازبینی شده در 6 نوامبر 2019 .
- ↑ نورویتز، نیل (8 آوریل 2002). “برنامه انتشار [python-dev] (دارای ثبات و تغییرات بود)” . بازیابی شده در 27 ژوئن 2009 .
- ^ a b ahz; باکستر، آنتونی (15 مارس 2001). “PEP 6 – رفع اشکال منتشر شد”. پیشنهاد بهبود پایتون بنیاد نرم افزار پایتون بازیابی شده در 27 ژوئن 2009 .
- ↑ «بیلد بات پایتون». راهنمای برنامه نویس پایتون بنیاد نرم افزار پایتون بازبینی شده در 24 سپتامبر 2011 .
- ^ “1. گسترش پایتون با C یا C++ – Python 3.9.1 Documentation”. docs.python.org . بازبینی شده در 14 فوریه 2021 .
- ↑ “PEP 623 – wstr را از یونیکد حذف کنید”. python.org _ بازبینی شده در 14 فوریه 2021 .
- ↑ “PEP 634 – تطبیق الگوی ساختاری: مشخصات”. python.org _ بازبینی شده در 14 فوریه 2021 .
- ↑ «ابزارهای مستندسازی». python.org _ بازبینی شده در 22 مارس 2021 .
- ^ A B “اشتهای خود را بارگیری کنید”. آموزش پایتون . بنیاد نرم افزار پایتون بازبینی شده در 20 فوریه 2012 .
- ^ “در پایتون، آیا باید بعد از بازگشت در بلوک if از other استفاده کنم؟” ، سرریز پشته . صرافی پشته. 17 فوریه 2011 . بازبینی شده در 6 مه 2011 .
- ↑ لوتز، مارک (2009). یادگیری پایتون: برنامه نویسی قدرتمند شی گرا. O’Reilly Media, Inc. ص 17. شابک 9781449379322،
- ↑ فیهیلی، کریس (2002). پایتون . پرس هلو. P XV ISBN 9780201748840،
- ↑ «شاخص TIOBE». TIOBE – شرکت کیفیت نرم افزار . بازبینی شده در 26 فوریه 2021 .
- ↑ بلیک، نویسنده تروی (18 ژانویه 2021). “شاخص TIOBE برای ژانویه 2021”. اخبار و اطلاعات فناوری توسط SeniorDBA . بازبینی شده در 26 فوریه 2021 .
- ↑ TIOBE Software Index (2015). “TIOBE Programming Community Index Python” . بازبینی شده در 10 سپتامبر 2015 .
- ↑ پریچالت، لوتز (14 مارس 2000). “مقایسه تجربی C، C++، Java، Perl، Python، Rex، و Tcl” (PDF) . بازبینی شده در 30 اوت 2013 .
- ↑ «نقل قول در مورد پایتون». بنیاد نرم افزار پایتون بازیابی شده در 8 ژانویه 2012 .
- ↑ «سازمانهایی که از پایتون استفاده میکنند». بنیاد نرم افزار پایتون بازیابی شده در 15 ژانویه 2009 .
- ↑ «پایتون: جام مقدس برنامهنویسی». بولتن سرن انتشارات سرن (31/2006). 31 جولای 2006 . بازبینی شده در 11 فوریه 2012 .
- ↑ شفر، دانیل جی. (17 ژانویه 2003). “پایتون طراحی ماموریت شاتل فضایی را ساده می کند”. بنیاد نرم افزار پایتون بازیابی شده در 24 نوامبر 2008 .
- ↑ «تورنادو: چارچوب وب بلادرنگ فیس بوک برای پایتون – فیس بوک برای توسعه دهندگان». فیس بوک برای توسعه دهندگان بازبینی شده در 19 ژوئن 2018 .
- ↑ «What Powers Instagram: صدها نمونه، دهها فناوری». مهندسی اینستاگرام بازبینی شده در 27 مه 2019 .
- ↑ «نحوه استفاده از پایتون در اسپاتیفای». Spotify Labs 20 مارس 2013 . بازبینی شده در 25 جولای 2018 .
- ↑ فورتنبری، تیم (17 ژانویه 2003). “نور صنعتی و جادو روی پایتون اجرا می شود”. بنیاد نرم افزار پایتون بازبینی شده در 11 فوریه 2012 .
- ↑ تافت، داریل کی. (5 مارس 2007). “پایتون به سیستم می لغزد”. eWeek.com _ جیف دیویس هلدینگ . بازبینی شده در 24 سپتامبر 2011 .
- ^ کد تاریخی از GitHub – reddit-archive/reddit: reddit.com. ، بایگانی Reddit ، بازیابی شده در 20 مارس 2019
- ↑ «سهم بازار پایتون برای آمار استفاده و وبسایتها». 2012 . بازبینی شده در 18 دسامبر 2012 .
- ↑ اولیفانت، تراویس (2007). “پایتون برای محاسبات علمی”. محاسبات در علوم و مهندسی . 9 (3): 10-20. Bibcode : 2007CSE ….. 9c..10O . SiteSeerX 10.1.1.474.6460 . doi: 10.1109/mcse.2007.58. S2CID 206457124 .
- ^ میلمن، ک. جارود؛ آیوازیس، مایکل (2011). “پایتون برای دانشمندان و مهندسان”. محاسبات در علوم و مهندسی . 13 (2): 9-12. Bibcode : 2011CSE …. 13b … 9M . doi: 10.1109/mcse.2011.36.
- ^ آموزش علوم با SageMath، محاسبات نوآورانه در آموزش علوم ، بازیابی شده در 22 آوریل 2019
- ↑ «OpenCV: The OpenCV-Python Tutorial». docs.opencv.org . بازبینی شده در 14 سپتامبر 2020 .
- ^ دین، جف؛ مونگا، نقره؛ و دیگران. (9 نوامبر 2015). “TensorFlow: یادگیری ماشین در مقیاس بزرگ در سیستم های ناهمگن” (PDF) . TensorFlow.org _ تحقیق گوگل بازبینی شده در 10 نوامبر 2015 .
- ↑ پیاتتسکی، گریگوری. Python eats in R: نرم افزار برتر برای تجزیه و تحلیل، علم داده، یادگیری ماشین در سال 2018: روندها و تجزیه و تحلیل ها. Cadengates . Cadengates . بازبینی شده در 30 مه 2018 .
- ↑ “چه کسی از scikit-learn استفاده می کند؟ – scikit-learn 0.20.1 Documentation”. scikit-learn.org .
- ^ جوپی، هنجار. «گوگل وظایف یادگیری ماشینی را با تراشه سفارشی TPU افزایش میدهد». وبلاگ Google Cloud Platform . بازبینی شده در 19 مه 2016 .
- ↑ «کتاب ابزار زبان طبیعی — مستندات NLTK 3.5b1». www.nltk.org .
- ^ “نصب کننده برای GIMP برای ویندوز – سوالات متداول”. 26 جولای 2013. بایگانی شده از نسخه اصلی در 17 جولای 2013 . بازبینی شده در 26 جولای 2013 .
- ↑ “JSC PSP 9 Components”. بایگانی شده از نسخه اصلی در 19 مارس 2008.
- ↑ «درباره شروع کار با نوشتن اسکریپت های پردازش جغرافیایی». ArcGIS Desktop Help 9.2 . پژوهشکده سیستم های زیست محیطی. 17 نوامبر 2006 . بازبینی شده در 11 فوریه 2012 .
- ↑ CCP Porkbelly (24 اوت 2010). «پایتون بدون پشته 2.7». وبلاگ برنامه نویس اجتماع حوا . بازی های CCP.
همانطور که می دانید، در هسته EVE زبان برنامه نویسی به نام Stackless Python قرار دارد.
- ↑ کودیل، بری (20 سپتامبر 2005). “بازنگری در تمدن سید مایر IV”. وبلاگ توسعه دهنده Sid Meier’s Civilization IV . بازی های Firaxis. بایگانی شده از نسخه اصلی در 2 دسامبر 2010.
ما سه سطح ابزار ایجاد کردیم… سطح بعدی پشتیبانی از Python و XML را فراهم میکند و به مددرها با تجربه بیشتر اجازه میدهد دنیای بازی و همه چیز را در آن دستکاری کنند.
- ↑ «راهنمای زبان پایتون (نسخه 1.0)». Google Documents List Data API نسخه 1.0 . بایگانی شده از نسخه اصلی در 15 جولای 2010.
- ↑ «راه اندازی و استفاده از پایتون». بنیاد نرم افزار پایتون بازیابی شده در 10 ژانویه 2020 .
- ↑ «مصونیت: دانستن اینکه ایمن هستید». بایگانی شده از نسخه اصلی در 16 فوریه 2009.
- ↑ «امنیت اصلی». امنیت اصلی .
- ^ “شکر چیست؟” ، آزمایشگاه قند . بازبینی شده در 11 فوریه 2012 .
- ↑ «4.0 ویژگیها و پیشرفتهای جدید». LibreOffice.org _ بنیاد سند. 2013 . بازبینی شده در 25 فوریه 2013 .
- ↑ «Gotchas برای کاربران پایتون». boo.codehaus.org . بنیاد کدهاوس بایگانی شده از نسخه اصلی در 11 دسامبر 2008 . بازیابی شده در 24 نوامبر 2008 .
- ↑ استربروک، چارلز. “پذیرش – پذیرفته شدن” . cobra-bhasha.com . زبان کبری . بازیابی شده در 7 آوریل 2010 .
- ↑ «پیشنهاد: تکرارکنندهها و تولیدکنندگان [ES4 wiki]». wiki.ecmascript.org. بایگانی شده از نسخه اصلی در 20 اکتبر 2007 . بازیابی شده در 24 نوامبر 2008 .
- ↑ «سوالات متداول». مستندات موتور گودو
- ↑ کینکید، جیسون (10 نوامبر 2009). Google’s Go: زبان برنامه نویسی جدیدی که پایتون با C++ روبرو می شود. TechCrunch . بازیابی شده در 29 ژانویه 2010 .
- ↑ Strachan، James (29 اوت 2003). “Groovy – تولد یک زبان پویا جدید برای پلت فرم جاوا”. بایگانی شده از نسخه اصلی در 5 آوریل 2007 . بازیابی شده در 11 ژوئن 2007 .
- ↑ Yegulalp، Serdar (16 ژانویه 2017). “زبان Nim بهترین مشتق شده از Python، Rust، Go و Lisp”. دنیای اطلاعات
نحو Nim به شدت یادآور Python است، زیرا از بلوکهای کد فرورفته و نحوی تا حدی مشابه (مانند نحوه ساخت بلوکهای if/elif/then/else) استفاده میکند.
- ↑ «مصاحبه با خالق یاقوت». Linuxdevcenter.com _ بازیابی شده در 3 دسامبر 2012 .
- ↑ لاتنر، کریس (3 ژوئن 2014). “صفحه اصلی کریس لاتنر”. کریس لاتنر . بازبینی شده در 3 ژوئن 2014 .
من کار بر روی زبان برنامه نویسی سویفت را در جولای 2010 شروع کردم.
من بسیاری از ساختارهای اساسی زبان را پیادهسازی کردم که فقط تعداد کمی از افراد از وجود آن آگاه بودند.
چند نفر دیگر (شگفت انگیز) در اواخر سال 2011 شروع به مشارکت جدی کردند و در ژوئیه 2013 تمرکز اصلی برای گروه ابزارهای توسعه دهنده اپل شد […] Objective-C، Rust، Haskell، Ruby، Python برای جذب ایده از .
C#، CLU، و بسیاری دیگر برای فهرست کردن.
- ↑ کوپریس، آندریاس؛ همکار، دونال ک. (14 سپتامبر 2000). “نکته شماره 3: فرمت نکته”. tcl.tk _ Tcl Developer Exchange . بازیابی شده در 24 نوامبر 2008 .
- ^ گوستافسون، هر Niskanen, Raimo (29 ژانویه 2007). “EEP 1: اهداف و دستورالعمل های EEP”. erlang.org . بازبینی شده در 19 آوریل 2011 .
- ↑ «فرآیند توسعه سریعتر». مخزن تکامل زبان برنامه نویسی سویفت در GitHub . 18 فوریه 2020 . بازبینی شده در 27 آوریل 2020 .
منابع می گویند
- “پایتون برای هوش مصنوعی”. wiki.python.org. اصلی از 19 ژوئیه 2012 تا 1 نوامبر 2012 بایگانی شده است. بازیابی شده در 3 دسامبر 2012 .
- پین، جوسلین، ویرایش. (اوت 2005). “هوش مصنوعی در پایتون”. روزنامه خبره هوش مصنوعی امی!. بایگانی شده از نسخه اصلی 26 مارس 2012 . بازبینی شده در 11 فوریه 2012 .
- “PyAIML 0.8.5: Python Package Index”. pypy.python.org . بازبینی شده در 17 جولای 2013 .
- راسل، استوارت جی. و نورویگ، پیتر (2009). هوش مصنوعی: یک رویکرد مدرن (ویرایش سوم). رودخانه فوقانی زین، نیوجرسی: سالن پرنتیس. isbn 978-0-13-604259-4،
بیشتر خواندن
- داونی، آلن بی. (مه 2012). Think Python: How to Think Like a Computer Scientist (نسخه 1.6. isbn 978-0-521-72596-5،
- همیلتون، نائومی (5 اوت 2008). “A-Z زبان های برنامه نویسی: پایتون”. دنیای کامپیوتر بایگانی شده از نسخه اصلی در 29 دسامبر 2008 . بازیابی شده در 31 مارس 2010 .
- لوتز، مارک (2013). یادگیری پایتون (ویرایش پنجم). رسانه اوریلی isbn 978-0-596-15806-4،
- زائر، مارک (2004). شیرجه رفتن به پایتون Apres. isbn 978-1-59059-356-1،
- زائر، مارک (2009). به پایتون 3 شیرجه بزنید. Apres. isbn 978-1-4302-2415-0،
- سامرفیلد، مارک (2009). برنامه نویسی در پایتون 3 (ویرایش دوم) . ادیسون وسلی حرفه ای. isbn 978-0-321-68056-3،
8 نظرات