پایتون (زبان برنامهنویسی)
پایتون (به انگلیسی: Python، US: /ˈpaɪθɑːn/) یک زبان برنامهنویسی شیءگرا، تفسیری، سطح بالا، و همه منظوره است، که خیدو فان روسوم[lower-alpha 1] آن را طراحی کردهاست، و اولین بار در سال ۱۹۹۱ منتشر شدهاست. فلسفه اصلی طراحی پایتون «خوانایی بالای کد» است و نویسههای فاصله خالی در آن معنادار هستند و مکرر استفاده میشوند. ساختار زبانی و دیدگاه شیءگرا در پایتون به گونهای طراحی شدهاست که به برنامهنویس امکان نوشتن کد منطقی و واضح (بدون ابهام) را برای پروژههای کوچک و بزرگ میدهد.[26]
الگو برنامهنویسی | چند الگویی: تابعی، دستوری، شیگرا، پژواکی |
---|---|
طراحی شده توسط | خیدو فان روسوم |
توسعهدهنده | بنیاد نرمافزاری پایتون |
ظهوریافته در | ۲۰ فوریه ۱۹۹۱ |
انتشار پایدار | |
انتشار آزمایشی | |
اردکی، پویا، تدریجی (از پایتون(3.5))[2] | |
بنسازه رایانش | چندسکویی |
پروانه | پروانهٔ بنیاد نرم افزار پایتون |
وبگاه | |
پیادهسازیهای بزرگ | |
سیپایتون، آیرون پایتون, جایتون، میکرو پایتون, نامبا, پایپای، پایتون بدون پشته | |
گویش | |
آر پایتون، سایتون[5] | |
متأثر از | |
تأثیر گذاشته بر | |
کلمات کلیدی و اصلی این زبان به صورت حداقلی تهیه شدهاند و در مقابل کتابخانههایی که در اختیار کاربر است بسیار وسیع هستند.
بر خلاف برخی زبانهای برنامهنویسی رایج دیگر که بلاکهای کد در آکولاد تعریف میشوند (بهویژه زبانهایی که از نحو زبان سی پیروی میکنند) در زبان پایتون از نویسه فاصله و جلو بردن متن برنامه برای مشخص کردن بلاکهای کد استفاده میشود. به این معنی که تعدادی یکسان از نویسه فاصله در ابتدای سطرهای هر بلاک قرار میگیرند و این تعداد در بلاکهای کد درونیتر افزایش مییابد. بدین ترتیب بلاکهای کد به صورت خودکار ظاهری مرتب دارند.
در پایتون مدلهای مختلف برنامهنویسی (از جمله شیگرا و برنامهنویسی دستوری و تابع محور) را پشتیبانی میشود و برای مشخص کردن نوع متغیرها از یک سامانهٔ پویا استفاده میشود.
این زبان از زبانهای برنامهنویسی مفسر بوده و به صورت کامل یک زبان شیءگرا است که در ویژگیها با زبانهای تفسیری پرل، روبی، اسکیم، اسمالتاک و تیسیال مشابهت دارد و از مدیریت خودکار حافظه استفاده میکند.[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]
کامپایلرهای تقابلی به زبانهای دیگر
چندین کامپایلر به زبانهای سطح بالای شیء گرا وجود دارد خواه زبان مبدأ پایتون محدود نشده باشد خواه زیر مجموعههای محدود شدهٔ آن یا زبانهای مشابه پایتون باشند:
- سایتون پایتون را به C و C++ کامپایل میکند.
- گرامپی [lower-alpha 32] گوگل (آخرین انتشار در سال ۲۰۱۷) پایتون ۲ را به زبان گو کامپایل میکند.[89][90]
- آیرون پایتون از روش مشابهی استفاده میکند تا برنامهٔ نوشته شده با پایتون را بر .NET. زمان اجرای زبان مشترک اجرا کند.
- جایتون امکان استفاده از کلاسها کتابخانهٔ جاوا را از زبان پایتون فراهم میکند.
- مای اچدیال[lower-alpha 33] پایتون را به زبان ویاچدیال کامپایل میکند.
- نویتکا [lower-alpha 34] پایتون را به C++ کامپایل میکند.[91]
- نامبا[lower-alpha 35] از الالویام استفاده میکند تا کد پایتون را به کد ماشین کامپایل کند.
- Pyjs (آخرین انتشار در سال ۲۰۱۲) پایتون را به جاوا اسکریپت کامپایل میکند.
- پایرکس[lower-alpha 36] (آخرین انتشار در سال ۲۰۱۰) و شِد اسکین[lower-alpha 37] (آخرین انتشار در سال ۲۰۱۳) به ترتیب کد پایتون را به زبانهای C و C++ کامپایل میکنند.
- پایترن[lower-alpha 38] کد پایتون را به زبان C++ کامپایل میکند.[92][93]
- آرپایتون میتواند به زبان C, کامپایل شود و برای ساختن مفسر پایپای پایتون استفاده میشود.
توسعه
توسعهٔ پایتون از طریق پیئیپی 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]
پکیجهای پایتون در زمینههای گوناگونی کاربرد دارند:
- خودکارسازی
- آنالیز داده
- پایگاه داده
- سندپردازی
- رابط کاربر گرافیکی
- پردازش تصویر
- یادگیری ماشین
- اپ موبایل
- چندرسانهای
- شبکه
- محاسبهٔ علمی
- مدیریت سیستم
- ابزار تست نرمافزارها
- پردازش متن
- چارچوبهای نرمافزاری تحت وب
- تراش دادن داده وب[106]
محیطهای ویرایشگر کد پایتون
بیشتر پیادهسازیهای پایتون (شامل سی پایتون، اولین پیادهسازی) میتوانند مثل یک مفسر خط فرمان عمل کنند، برای زمانی که کاربر رشته شرط را وارد میکند و فوراً نتیجه را میپذیرد. خلاصه پایتون به عنوان یک برنامه واسط عمل میکند. وقتی صرف دیگر شیوههای اجرا (کامپایل کد بایت یا کامپایل کد محلی) به صورت یک رشته صرف ذخیره میشود، یک افزایش سرعت در هزینههای متقابل به وجود میآید، بنابراین آنها معمولاً فقط خارج از مفسر خط فرمان استفاده میشوند. (وقتی یک ماژول وارد میشود)
برنامههای واسط دیگر، امکانات تحت آن را در مفسر بیسیک افزایش میدهند، شامل آیدیالئی و آیپایتون. وقتی عموماً از برنامه واسط پایتون پیروی میشود، خصوصیاتی مشابه تکمیل خودکار، نگه داشتن زمان اجرای برنامه و نشان دادن صرف پیادهسازی میشود.
واسط گرافیکی
برای پایتون واسط گرافیکی کاربرهای بسیاری نوشته شدهاست که پرکاربردترین آنها به شرح زیر است:[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] استفاده میکند. پاردوس از آن برای مدیریت و در طول راهاندازی سیستم استفاده میکند.
برنامههایی که کاملاً یا بخشی از آنها با پایتون نوشته شدهاست
- اینستاگرام:[lower-alpha 69] نرمافزار اشتراکگذاری تصاویر و ویدیوها
- بیتتورنت (نرمافزار):[lower-alpha 70] نرمافزار کلاینت برای فایلهای به اشتراک گذاشته شدهٔ همتابههمتا توسط پروتکل بیتتورنت
- چندلر:[lower-alpha 71] مدیر اطلاعات شخصی شامل تقویم، میل، کارهای روزانه، یادداشتها و…
- تمدن ۴: یک گیم کامپیوتری بر مبنای پایتون که از boost.python استفاده میکند
- میلمن:[lower-alpha 72] یکی از معروفترین نرمافزارهای مرتبط با ایمیل
- کمبیلو:[lower-alpha 73] مدیر پایگاه داده و مرورگر بازیهای گو
- موینموین:[lower-alpha 74] یکی از قدرتمندترین و معروفترین ویکیهای موجود
- پلون:[lower-alpha 75] یک ابزار مدیریتی محتوایی متن باز، قدرتمند و کاربر پسند
- پورتاژ:[lower-alpha 76] قلب توزیع جنتو. یک مدیر بستهای سیستم لینوکس
- زوپ:[lower-alpha 77] یک پلتفرم شیء گرای مبتنی بر وب. زوپ شامل یک سرور نرمافزار به همراه پایگاه داده شیء گرا و یک رابط مدیریتی درونی مبتنی بر وب میباشد
- اسپیای:[lower-alpha 78] یک محیط ویرایشگر کد رایگان، متن باز برای سیستمعاملهای ویندوز، لینوکس، مک که از وکسگلید[lower-alpha 79] (طراحی رابط کاربر),پایچکر بلندر تریدی پشتیبانی میکند
- یام:[lower-alpha 80] یک برنامه مدیریت بسته متنباز برای توزیعهای سازگار با آرپیام.
- آباکوس:[lower-alpha 81]نرمافزار شبیهسازی با روش المان محدود که امکان اسکریپتنویسی به زبان پایتون را به کاربر میدهد.
زبانهای متأثر از پایتون
طراحی و فلسفهٔ پایتون بر زبانهای زیادی تأثیر گذاشتهاست:
- زبان بو از تورفتگی استفاده میکند همچنین سینتکس و مدل شیءگرایی آن مشابه پایتون است.[135]
- کبرا از تورفتگی و نحو مشابه استفاده میکند و در سند سپاسگزاری اش پایتون را به عنوان مورد اول در فهرست زبانهایی که از آن تأثیر پذیرفتهاست معرفی میکند.[136]
- نحو کافی اسکریپت زبانی که کامپایل تقابلی به جاوا اسکریپت میکند، از پایتون الهام گرفته شدهاست.
- گو نیز با هدف سرعت کار زبان برنامهنویسیای پویا همچون پایتون نوشته شدهاست.[137] و نحو آن در جدا کردن آرایهها مشابه پایتون است.
- گرووی با هدف آوردن فلسفهٔ طراحی پایتون به جاوا توسعه داده شد.[138]
- هدف از طراحی جولیا این است که مثل پایتون باشد در برنامهنویسی عمومی قابل استفاده باشد.[22]
- زبان برنامهنویسی نیم از تورفتگی استفاده میکند و همچنین نحوی مشابه با پایتون دارد.[139]
- سازندهٔ روبی ، یوکیهیرو ماتسوموتو گفتهاست «من زبان برنامهنویسی ای میخواهم که از پرل قدرتمند تر و از پایتون شیء گرا تر باشد و به همین دلیل است که تصمیم گرفتم زبان خودم را طراحی کنم.»[140]
- سوئیفت زبان برنامهنویسی ای که اپل آن را توسعه دادهاست نیز نحوی الهام گرفته شده از پایتون را دارد.[141]
جستارهای وابسته
واژهنامه
- Guido van Rossum
- Centrum Wiskunde & Informatica
- Benevolent dictator for life
- steering council
- Nick Coghlan
- Brett Cannon
- Barry Warsaw
- Carol Willing
- cycle-detecting garbage collector
- backward compatibility
- Object-oriented programming
- Structured programming
- Metaprogramming
- itertools
- functools
- Alex Martelli
- Pythonista
- pythonic
- unpythonic
- Walrus Operator
- number
- Sequence
- set
- mapping
- Callable types
- Jython
- PyPy
- Stackless Python
- MicroPython
- CircuitPython
- Psyco
- Grumpy
- MyHDL
- Nuitka
- Numba
- Pyrex
- Shed Skin
- Pythran
- Django
- Pylons
- TurboGears
- Tornado
- Flask
- Bottle
- Zope
- IronPython
- Ajax-based
- SQLAlchemy
- Twisted
- NumPy
- SciPy
- Matplotlib
- Biopython
- Astropy
- SageMath
- Notebook interface
- 3ds Max
- Blender
- Modo
- Nuke
- GIMP
- scorewriter
- capella
- pretty printer
- ESRI
- ArcGIS
- Scikit-learn
- Portage
- BitTorrent
- Chandler
- Mailman
- Kombilo
- MoinMoin
- Plone
- Portage
- zope
- SPE
- wxGlade
- Yum
- Abaqus
منابع
- "Python 3.8.10, 3.9.5, and 3.10.0b1 are now available" (به زبان انگلیسی). 3 May 2021. Retrieved 4 May 2021.
- "PEP 483 -- The Theory of Type Hints". Python.org.
- File extension .pyo was removed in Python 3.5. See PEP 0488
- Holth, Moore (30 March 2014). "PEP 0441 -- Improving Python ZIP Application Support". Retrieved 12 November 2015.
- "Starlark Language". Retrieved 25 May 2019.
- "Why was Python created in the first place?". General Python FAQ. Python Software Foundation. Retrieved 22 March 2007.
- "Ada 83 Reference Manual (raise statement)".
- 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.
- "itertools — Functions creating iterators for efficient looping — Python 3.7.1 documentation". docs.python.org.
- 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.
- "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
- 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.
- 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
- Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. Retrieved 9 February 2012.
- Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 May 2001). "PEP 255 – Simple Generators". Python Enhancement Proposals. Python Software Foundation. Retrieved 9 February 2012.
- 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.
- "More Control Flow Tools". Python 3 documentation. Python Software Foundation. Retrieved 24 July 2015.
- "CoffeeScript". coffeescript.org.
- "The Genie Programming Language Tutorial". Retrieved 28 February 2020.
- "Perl and Python influences in JavaScript". www.2ality.com. 24 February 2013. Retrieved 15 May 2015.
- Rauschmayer, Axel. "Chapter 3: The Nature of JavaScript; Influences". O'Reilly, Speaking JavaScript. Retrieved 15 May 2015.
- "Why We Created Julia". Julia website. February 2012. Retrieved 5 June 2014.
We want something as usable for general programming as Python [...]
- Ring Team (4 December 2017). "Ring and other languages". ring-lang.net. ring-lang.
- 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.
- 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.
- Kuhlman, Dave. "A Python Book: Beginning Python, Advanced Python, and Python Exercises". Section 1.1. Archived from the original (PDF) on 23 June 2012.
- Python Garbage Collection
- مستندات پایتون ۲ - زبالهروب
- مستندات پایتون ۲ - زبالهروب
- "Sunsetting Python 2". Python.org. Retrieved 2019-09-22.
- "PEP 373 -- Python 2.7 Release Schedule". Python.org. Retrieved 2019-09-22.
- "Python Developer's Guide — Python Developer's Guide". devguide.python.org. Retrieved 2019-12-17.
- «Python Programming Language – Official Website». Python Software Foundation. دریافتشده در ۵ فروردین ۱۳۹۰.
- Venners, Bill (13 January 2003). "The Making of Python". Artima Developer. Artima. Retrieved 22 March 2007.
- «History and License». The Python Software Foundation. مارس ۲۴, ۲۰۱۱. دریافتشده در ۵ فروردین ۱۳۹۰.
- مستندات پایتون - پایتون برای چه ایجاد شد؟
- van Rossum, Guido (20 January 2009). "A Brief Timeline of Python". The History of Python. Retrieved 20 January 2009.
- مشارکتکنندگان ویکیپدیا. «Benevolent Dictator For Life». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۵ فروردین ۱۳۹۰.
- 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.
- "Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life | Linux Journal". www.linuxjournal.com.
- "Python boss Guido van Rossum steps down after 30 years". The Inquirer.
- "PEP 8100". python. Python Software Foundation. Retrieved 4 May 2019.
- "PEP 8100". Python Software Foundation. Retrieved 4 May 2019.
- https://discuss.python.org/t/steering-council-nomination-guido-van-rossum-2020-term/2657/11. Missing or empty
|title=
(help) - Kuchling, A. M.; Zadka, Moshe (16 October 2000). "What's New in Python 2.0". Python Software Foundation. Retrieved 11 February 2012.
- "Python 3.0 Release". Python Software Foundation. Retrieved 8 July 2009.
- 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.
- "Automated Python 2 to 3 code translation — Python Documentation". Retrieved 11 February 2018.
- "PEP 373 -- Python 2.7 Release Schedule". python.org. Retrieved 9 January 2017.
- "PEP 466 -- Network Security Enhancements for Python 2.7.x". python.org. Retrieved 9 January 2017.
- The Cain Gang Ltd. "Python Metaclasses: Who? Why? When?" (PDF). Archived from the original (PDF) on 30 May 2009. Retrieved 27 June 2009.
- "3.3. Special method names". The Python Language Reference. Python Software Foundation. Retrieved 27 June 2009.
- "PyDatalog". Retrieved 22 July 2012.
- "Extending and Embedding the Python Interpreter: Reference Counts". Docs.python.org. Retrieved June 5, 2020.
Since Python makes heavy use of
malloc()
andfree()
, it needs a strategy to avoid memory leaks as well as the use of freed memory. The chosen method is called reference counting. - Hettinger, Raymond (30 January 2002). "PEP 289 – Generator Expressions". Python Enhancement Proposals. Python Software Foundation. Retrieved 19 February 2012.
- "6.5 itertools – Functions creating iterators for efficient looping". Docs.python.org. Retrieved 22 November 2016.
- Peters, Tim (19 August 2004). "PEP 20 – The Zen of Python". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008.
- Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2nd Edition. O'Reilly Media. p. 230. ISBN 978-0-596-00797-3.
- "Python Culture". ebeab. January 21, 2014. Archived from the original on January 30, 2014.
- Goodger, David. "Code Like a Pythonista: Idiomatic Python". Archived from the original on 27 May 2014. Retrieved 24 March 2009.
- "How to think like a Pythonista". Archived from the original on 23 March 2018. Retrieved 8 July 2020.
- "Whetting Your Appetite". The Python Tutorial. Python Software Foundation. Retrieved 20 February 2012.
- "In Python, should I use else after a return in an if block?". Stack Overflow. Stack Exchange. 17 February 2011. Retrieved 6 May 2011.
- Lutz, Mark (2009). Learning Python: Powerful Object-Oriented Programming. O'Reilly Media, Inc. p. 17. ISBN 978-1-4493-7932-2.
- Fehily, Chris (2002). Python. Peachpit Press. p. xv. ISBN 978-0-201-74884-0.
- "Is Python a good language for beginning programmers?". General Python FAQ. Python Software Foundation. Retrieved 21 March 2007.
- "Myths about indentation in Python". Secnetix.de. Archived from the original on 18 February 2018. Retrieved 19 April 2011.
- 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.
- "PEP 0465 -- A dedicated infix operator for matrix multiplication". python.org. Retrieved 1 January 2016.
- "Python 3.5.1 Release and Changelog". python.org. Retrieved 1 January 2016.
- "What's New in Python 3.8". Retrieved 14 October 2019.
- "Chapter 15. Expressions - 15.21.1. Numerical Equality Operators == and !=". Oracle Corporation. Retrieved 28 August 2016.
- "Chapter 15. Expressions - 15.21.3. Reference Equality Operators == and !=". Oracle Corporation. Retrieved 28 August 2016.
- van Rossum, Guido; Hettinger, Raymond (7 February 2003). "PEP 308 – Conditional Expressions". Python Enhancement Proposals. Python Software Foundation. Retrieved 13 July 2011.
- "Why must 'self' be used explicitly in method definitions and calls?". Design and History FAQ. Python Software Foundation. Retrieved 19 February 2012.
- "The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.1". Retrieved 12 January 2011.
- "Built-in Types". Retrieved 3 October 2019.
- van Rossum, Guido (5 June 2001). "PEP 7 – Style Guide for C Code". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008.
- "CPython byte code". Docs.python.org. Retrieved 16 February 2016.
- "Python 2.5 internals" (PDF). Retrieved 19 April 2011.
- "An Interview with Guido van Rossum". Oreilly.com. Retrieved 24 November 2008.
- "PyPy compatibility". Pypy.org. Retrieved 3 December 2012.
- "speed comparison between CPython and Pypy". Speed.pypy.org. Retrieved 3 December 2012.
- Shaw, Anthony (2018-03-30). "Which is the fastest version of Python?". Hacker Noon. Retrieved 2019-12-20.
- "Application-level Stackless features — PyPy 2.0.2 documentation". Doc.pypy.org. Retrieved 17 July 2013.
- "Python-for-EV3". LEGO Education. Retrieved 17 April 2019.
- "Plans for optimizing Python". Google Project Hosting. 15 December 2009. Retrieved 24 September 2011.
- "Python on the Nokia N900". Stochastic Geometry. 2010-04-29.
- "google/grumpy". 10 April 2020 – via GitHub.
- "Projects". opensource.google.
- "Nuitka Home | Nuitka Home". nuitka.net. Retrieved 18 August 2017.
- Borderies, Olivier (24 January 2019). "Pythran: Python at C++ speed !". Medium.
- "Pythran — Pythran 0.9.5 documentation". pythran.readthedocs.io.
- 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.
- "PEP 8 -- Style Guide for Python Code". Python.org.
- 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.
- "Python Developer's Guide".
- "PEP 602 -- Annual Release Cycle for Python". Python.org. Retrieved 6 November 2019.
- "Changing the Python release cadence [LWN.net]". lwn.net. Retrieved 6 November 2019.
- Norwitz, Neal (8 April 2002). "[Python-Dev] Release Schedules (was Stability & change)". Retrieved 27 June 2009.
- Aahz; Baxter, Anthony (15 March 2001). "PEP 6 – Bug Fix Releases". Python Enhancement Proposals. Python Software Foundation. Retrieved 27 June 2009.
- Piotrowski, Przemyslaw (July 2006). "Build a Rapid Web Development Environment for Python Server Pages and Oracle". Oracle Technology Network. Oracle. Retrieved 12 March 2012.
- Batista, Facundo (17 October 2003). "PEP 327 – Decimal Data Type". Python Enhancement Proposals. Python Software Foundation. Retrieved 24 November 2008.
- 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.
- Debill, Erik. "Module Counts". ModuleCounts. Retrieved 5 November 2019.
- "20+ Python Web Scraping Examples (Beautiful Soup & Selenium) - Like Geeks". likegeeks.com. 5 December 2017. Retrieved 12 March 2018.
- «GUI Programming in Python». The Python Wiki. ۲۰۱۰-۱۰-۱۰. دریافتشده در ۵ فروردین ۱۳۹۰.
- «Graphic User Interface FAQ». Python Software Foundation. مارس ۱۳, ۲۰۱۰. بایگانیشده از اصلی در ۶ اوت ۲۰۱۱. دریافتشده در ۵ فروردین ۱۳۹۰.
- "TIOBE Index". TIOBE - The Software Quality Company. Retrieved 7 March 2017.
- TIOBE Software Index (2015). "TIOBE Programming Community Index Python". Retrieved 10 September 2015.
- "Quotes about Python". Python Software Foundation. Retrieved 8 January 2012.
- "Organizations Using Python". Python Software Foundation. Retrieved 15 January 2009.
- "Python : the holy grail of programming". CERN Bulletin. CERN Publications (31/2006). 31 July 2006. Retrieved 11 February 2012.
- "Tornado: Facebook's Real-Time Web Framework for Python - Facebook for Developers". Facebook for Developers. Retrieved 2018-06-19.
- Shafer, Daniel G. (17 January 2003). "Python Streamlines Space Shuttle Mission Design". Python Software Foundation. Retrieved 24 November 2008.
- Taft, Darryl K. (5 March 2007). "Python Slithers into Systems". eWeek.com. Ziff Davis Holdings. Retrieved 24 September 2011.
- GitHub - reddit-archive/reddit: historical code from reddit.com., The Reddit Archives, 2019-03-19, retrieved 2019-03-20
- "Usage statistics and market share of Python for websites". 2012. Retrieved 18 December 2012.
- 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.
- 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.
- Science education with SageMath, Innovative Computing in Science Education, archived from the original on 15 June 2020, retrieved 22 April 2019
- "Installers for GIMP for Windows - Frequently Asked Questions". 26 July 2013. Archived from the original on 17 July 2013. Retrieved 26 July 2013.
- "jasc psp9components". Archived from the original on 19 March 2008.
- "About getting started with writing geoprocessing scripts". ArcGIS Desktop Help 9.2. Environmental Systems Research Institute. 17 November 2006. Retrieved 11 February 2012.
- 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.
- 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.
- "Python Language Guide (v1.0)". Google Documents List Data API v1.0. Archived from the original on 15 July 2010.
- "Immunity: Knowing You're Secure". Archived from the original on 16 February 2009.
- "Core Security". Core Security.
- 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.
- 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.
- "Who is using scikit-learn? — scikit-learn 0.20.1 documentation". scikit-learn.org.
- "Natural Language Toolkit — NLTK 3.5b1 documentation". www.nltk.org.
- "Python Setup and Usage". Python Software Foundation. Retrieved 10 January 2020.
- "Gotchas for Python Users". boo.codehaus.org. Codehaus Foundation. Archived from the original on 11 December 2008. Retrieved 24 November 2008.
- Esterbrook, Charles. "Acknowledgements". cobra-language.com. Cobra Language. Retrieved 7 April 2010.
- Kincaid, Jason (10 November 2009). "Google's Go: A New Programming Language That's Python Meets C++". TechCrunch. Retrieved 29 January 2010.
- 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.
- 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).
- "An Interview with the Creator of Ruby". Linuxdevcenter.com. Retrieved 3 December 2012.
- 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.
پیوند به بیرون
- وبگاه رسمی
- پایتون در کرلی (براساس دیموز)