پایتون (به انگلیسی: Python، US: /ˈpaɪθɑːn/) یک زبان برنامهنویسی شیءگرا، تفسیری، سطح بالا، و همه منظوره است، که خیدو فان روسوم آن را طراحی کردهاست، و اولین بار در سال ۱۹۹۱ منتشر شدهاست.
فلسفه اصلی طراحی پایتون «خوانایی بالای کد» است و نویسههای فاصله خالی در آن معنادار هستند و مکرر استفاده میشوند. ساختار زبانی و دیدگاه شیءگرا در پایتون به گونهای طراحی شدهاست که به برنامهنویس امکان نوشتن کد منطقی و واضح (بدون ابهام) را برای پروژههای کوچک و بزرگ میدهد.
پارادایم برنامهنویسی | چند الگویی: تابعی، دستوری، شیگرا، پژواکی |
---|---|
طراحی شده توسط | خیدو فان روسوم |
توسعهدهنده | بنیاد نرمافزاری پایتون |
ظهوریافته در | ۲۰ فوریه ۱۹۹۱ |
انتشار پایدار | |
اردکی، پویا، تدریجی (از پایتون(3.5)) | |
بنسازه رایانش | چندسکویی |
پروانه | پروانهٔ بنیاد نرمافزار پایتون |
قبل از ویرایش 3.5: .py, .pyc, .pyd, .pyo , از ویرایش 3.5:.pyw, .pyz | |
وبگاه | |
پیادهسازیهای بزرگ | |
سیپایتون، آیرون پایتون، جایتون، میکرو پایتون، نامبا، پایپای، پایتون بدون پشته | |
گویش | |
آر پایتون، سایتون | |
متأثر از | |
تأثیر گذاشته بر | |
کلمات کلیدی و اصلی این زبان بهصورت حداقلی تهیه شدهاند و در مقابل کتابخانههایی که در اختیار کاربر است بسیار وسیع هستند.
برخلاف برخی زبانهای برنامهنویسی رایج دیگر که بلاکهای کد در آکولاد تعریف میشوند (بهویژه زبانهایی که از نحو زبان سی پیروی میکنند) در زبان پایتون از نویسه فاصله و جلو بردن متن برنامه برای مشخص کردن بلاکهای کد استفاده میشود. به این معنی که تعدادی یکسان از نویسه فاصله در ابتدای سطرهای هر بلاک قرار میگیرند و این تعداد در بلاکهای کد درونیتر افزایش مییابد. بدین ترتیب بلاکهای کد به صورت خودکار ظاهری مرتب دارند.
در پایتون مدلهای مختلف برنامهنویسی (از جمله شیگرا و برنامهنویسی دستوری و تابع محور) را پشتیبانی میشود و برای مشخص کردن نوع متغیرها از یک سامانهٔ پویا استفاده میشود.
این زبان از زبانهای برنامهنویسی مفسر بوده و بهصورت کامل یک زبان شیءگرا است که در ویژگیها با زبانهای تفسیری پرل، روبی، اسکیم، اسمالتاک و تیسیال مشابهت دارد و از مدیریت خودکار حافظه استفاده میکند.
زبان پایتون ۲ رسماً از سال ۲۰۲۰ دیگر پشتیبانی نمیشود و پایتون ۲٫۷٫۱۸ آخرین نسخهٔ پایتون ۲٫۷ و همچنین پایتون ۲ است و ازاین به بعد دیگر هیچ وصلهٔ امنیتیای یا بهبود دیگری در این نسخه داده نخواهد شد.با پایان پشتیبانی از پایتون ۲ فقط پایتون ۳ نسخههای بعدی آن پشتیبانی خواهند شد.
پایتون پروژهای آزاد و متنباز توسعهیافتهاست و توسط بنیاد نرمافزار پایتون مدیریت میگردد.
پایتون اواخر دهه ۱۹۸۰ (میلادی) در مؤسسه ملی تحقیقات ریاضی و رایانه (CWI) در کشور هلند توسعه داده شد.
هدف خیدو از توسعهٔ پایتون ایجاد جانشینی برای زبان برنامهنویسی ایبیسی بود که قابلیت پردازش استثناها را داشته باشد.پیادهسازی پایتون در دسامبر ۱۹۸۹ آغاز شد. خیدو طراح اصلی پایتون است و نقش مداوم او در تصمیمگیری پیرامون اهداف پایتون، باعث شد که انجمن پایتون به او لقب دیکتاتور خیرخواه جاویدان را بدهد. فان روسوم تا ۱۲ ژوئیه ۲۰۱۸ مسئولیت رهبری پروژهٔ پایتون را به عهده داشت. در آن زمان او اعلام کرد که از مسئولیت خود به عنوان دیکتاتور خیرخواه جاویدان کنارهمیگیرد. در حال حاضر، او مسئولیت رهبری پروژهٔ پایتون را به یک انجمن راهبری پنج عضوی که خود نیز یکی از اعضای آن است دادهاست.در ژانویهٔ ۲۰۱۹ توسعه دهندگان فعال هستهٔ پایتون نیک کولان، برت کانون، بری وارساو، کارول ویلینگ، و خیدو فان روسوم را به عنوان اعضای انجمن انتخاب کردند.از آن زمان خیدو فان روسوم از نامزدی برای انجمن ۲۰۲۰ صرف نظر کردهاست.
پایتون ۲٫۰ در ۱۶ اکتبر ۲۰۰۰ با ویژگیهای مهم و جدید بسیاری منتشر شدکه شامل بازیافت حافظه با قابلیت شناسایی دور و پشتیبانی از یونیکد بود.
پایتون ۳٫۰ در ۳ دسامبر ۲۰۰۸ منتشر شد این نسخه بازنویسی عمدهای از نسخهٔ قبل بود که سازگاری عقبرو را شکسته بود.بسیاری از ویژگیهای عمدهٔ آن به پایتون 2.6.x و 2.7.x پیشانتقال داده شدند. نسخههای منتشر شده از پایتون ۳ ابزار 2to3
را دارند که کار ترجمهٔ کد پایتون ۲ به پایتون ۳ را (حداقل تا حدودی) انجام میدهد.
از سال ۲۰۱۵ مقرر شد نسخههای پایتون ۲٫۷ تنها تا سال ۲۰۲۰ پشتیبانی شوند.
فهرست برخی از تغییرات عمده پایتون ۳٫۰:
from – future – import print – function
فراهم شد.
http_code = 418 match http_code: case 200: print("OK") do_something_good() case 404: print("Not Found") do_something_bad() case 418: print("I'm a teapot") make_coffee() case _: print("Code not found")
پایتون یک زبان برنامهنویسی چند پارادایمی است به طوریکه هم شیء گرایی و برنامهنویسی ساختیافته را کاملاً پوشش میدهد و هم بسیاری از خصوصیات پایتون برنامهنویسی جنبه گرا و تابعی (مثل پشتیبانی از فرا برنامهنویسی) را پوشش میدهد. پارادایمهای برنامهنویسی دیگر نیز به وسیلهٔ افزونهها پشتیبانی شدهاند. مثل برنامهنویسی منطقی.
پایتون از تایپ پویا و ترکیبی از شمارش مرجع و یک حلقه کشف و بازیافت قسمتهای هدر رفته حافظه برای مدیریت حافظه، استفاده میکند. یک ویژگی مهم پایتون تحلیل نام پویا است که روشها و نام متغیرها را در طول اجرای برنامه به هم ملحق میکند.
طرح پایتون به پشتیبانی محدود برای برنامهنویسی تابعی به سُنَت زبان لیسپ، ارائه شد. به همین منظور پایتون دارای توابع filter
, map
, و reduce
و عبارتهای لیست، دیکشنری، مجموعه و جنراتور است. اگرچه، تشابههای عمدهای بین پایتون و زبان خانواده لیسپ وجود دارد. این کتابخانه دو ماژول دارد (ایترتولز و فانکتولز) که ابزارهای تابعی را با اقتباس از هسکل و استاندارد امال پیادهسازی میکند.
فلسفهٔ اصلی پایتون در سند ذن پایتون پیئیپی ۲۰ خلاصه شدهاست که شامل گزینههای زیر است:
به جای اینکه تمام عملکرد پایتون در هستهٔ آن متمرکز باشد طوری طراحی شدهاست که به خوبی از افزونهها پشتیبانی کند. این ویژگی پایتون که آن را محبوب کردهاست، راهی برای اضافه کردن ایپیآی به نرمافزارهای موجود بودهاست. ایدهٔ فان روسوم از زبانی با هستهٔ کوچک و کتابخانهٔ استاندارد بزرگ با مفسر افزونهپذیر، ریشه در سرخوردگی او از زبان ایبیسی دارد.
یکی از اهداف پایتون داشتن نحو سادهتر و منظمتر است؛ به همین دلیل برای روششناسی کد فقط یک انتخاب در مقابل توسعهدهنده قرار میدهد. روش پایتون در مقابل روش پرل (بیش از یک روش برای انجام آن وجود دارد) قرار دارد و فلسفهٔ طراحی آن چنین است «باید یک راه – و ترجیحاً فقط یک راه - آشکار برای انجام هر کاری وجود داشته باشد.». الکس مارتلی که نویسندهٔ کتابهای مربوط به پایتون است. مینویسد: «در فرهنگ پایتون «هوشمندانه» توصیف کردن چیزی ستایش بهشمار نمیرود.»
هدف دیگر طراحی زبان آسان کردن توسعهپذیری است. ماژولهایی که تازه ساخته شدهاند، بهسادگی در C و C++ نوشته میشوند. پایتون همچنین میتواند به عنوان زبان توسعه برای ماژولها و کاربردهای موجود که به برنامه واسط قابل برنامهریزی نیاز دارد، استفاده شود. توسعه دهندگان پایتون سعی کردند از بهینهسازی زود هنگام اجتناب کنند و وصلههای غیر حساس سیپایتون که باعث افزایش سرعت نهایی میشد را اضافه نکردند. هرگاه برای برنامهنویس پایتون سرعت اهمیت داشت، او میتواند توابع زمانبر را به ماژولهای افزونهای ببرد و آنها را به زبانهایی مثل سی بنویسد یا از پایپای استفاده کند که نوعی کامپایلر درجا است. از سایتون که اسکریپت پایتون را به سی ترجمه میکند نیز میتوان استفاده کرد.
به کاربران و علاقهمندان پایتون مخصوصاً آنان که باتجربه و آگاه به حساب میآیند پایتونیستا گفته میشود.
این زبان در مقایسه با زبانهای دیگر، دارای سرعت کمتری است. این زبان سطح بالایی است و مانند زبانهای C، رابطه خوبی با سختافزار ندارد. کارهایی که نیاز به حافظه کوتاه مدت دارند را نمیتوان برای زبان پایتون مناسب دانست.
یک واژه ابداعی رایج در انجمن پایتون، واژهٔ پایتونیک است که محدوده معنایی وسیعی را در رابطه با سبک برنامهنویسی در بر میگیرد. کدی پایتونیک است که از اصطلاحات پایتون به خوبی استفاده کرده باشد به طوری که شیوایی در زبان را نشان دهد و مطابق فلسفهٔ مینیمالیستی و خوانایی بالا در پایتون باشد. در مقابل کد آنپایتونیک کدی است که فهم آن مشکل است یا مثل رونویسیای از زبان دیگری باشد.
نام پایتون از گروه کمدین بریتانیایی مانتی پایتون که سازندهٔ پایتون، خیدو فان روسوم، به آن علاقهمند بود، گرفته شدهاست. اشاره به مانتی پایتان در فرهنگ پایتون و کدهای آن به وفور دیده میشود؛برای مثال در پایتون spam and eggs، به جای فوبار به عنوان متغیرهای فرانحوی به کار میرود.در مستندسازی رسمی پایتون نیز به روالهای مانتی پایتون اشاره میشود.
خوانایی بالا از اهداف زبان پایتون است؛ بنابراین طرح بندی آن مرتب و بدون حشو و زوائد است و اغلب از کلمات کلیدی انگلیسی استفاده میکند، در حالی که زبانها دیگر از نقطهگذاری استفاده میکنند. پایتون نسبت به زبانهای ساخت یافته سنتی، مثل C و پاسکال استثناءهای نحوی و موارد خاص کمتری دارد. و این اجازه را به برنامه نوسان میدهند که خلاقانه تر کدنویسی کنند و از تولید کدهای طولانی پرهیز کنند، زیرا کدهای طولانی میتواند سبب سنگین تر شدن برنامهها در هنگام خروجی گرفتن نیز باشد.
پایتون برای جداکردن بلوک کد به جای استفاده کردن از آکولاد از تورفتگی فاصله خالی استفاده میکند. برای شروع بلوک کد یک پله تورفتگی را بیشتر میکنیم و برای اتمام آن یک پله بلوک کد را کمتر میکنیم. پس ساختار ظاهری برنامه نمایش دهندهٔ ساختار معنایی آن است. این ویژگیای که به نام قاعدهٔ آف-ساید نیز شناخته میشود و در بعضی از زبانها وجود دارد ولی در بیشتر زبانهای برنامهنویسی وجود تورفتگی معنای خاصی نمیدهد.
حکمهای پایتون شامل:
if
که برای ایجاد شرط در برنامه استفاده میشود. (اگر شرط برقرار بود کار مورد نظر را انجام بده) کلمه else
به معنای در غیر اینصورت هست و در صورت برقرار نبودن شرط اجرا میشود و کلمه elif
(کوتاه شده else-if) به معنا در غیر اینصورت اگر شرط دیگر برقرار بود کار دیگر را انجام بده.for
برای ایجاد حلقههای تکرار در پایتون استفاده میشود که به یک شی قابل شمارش نیاز دارد.while
نیز برای ایجاد حلقههای تکرار شونده استفاده میشود با این تفاوت که به جای یک شی قابل شمارش(iterable) یک شرط میگیرد، و تا زمانیکه شرط برقرار باشد کاری را تکرار میکند.کلمه try
برای مدیریت خطاها استفاده میشود و با دو کلمهٔ except
یا finally
به کار گرفته شود.کلمه raise
برای بالاآوردن (ایجاد) یک خطا استفاده میشود.کلمه class
که برای ساخت نمونه و کلاسهای جدید توسط کاربر به کاربر میرود.def
که برای ایجاد یک تابع یا (Function) به کار میرود.with
که برای مدیریت منابع به کار میرود این کلمه در حقیقت برای راحتی کار و عدم نیاز به نوشتن try و except و finally به کار میرود.break
این کلمه را تنها در داخل حلقه میشود نوشت و حلقه را بهطور کامل قطع میکند و خارج میشود.کلمه continue
این کلمه نیز تنها در داخل حلقه استفاده میشود و هنگام برخورد مفسر به این کلمه به iterate بعدی پرش میکند و حلقه از بالا شروع میشود.del
که برای پاک کردن متغیرها از آن استفاده میشود. این کلمه اسم متغیر را از فضا نام برنامه پاک میکند.pass
ساده شده این دستور میشود کاری نکن.assert
که هنگام دیباگ کردن استفاده میشود. شرطی که باید اتفاق بیافتد را بررسی میکند.کلمه yield
که از آن در توابع مولد (جنراتور) به جای return
استفاده میشود.print
که در پایتون ۳ تبدیل به تابع print()
شد. (#خصوصیات)import
که برای وارد کردن ماژول استفاده میشود.return
که برای برگرداندن مقادیر در تابع استفاده میشود.سی پایتون استمرار را پشتیبانی نمیکند و مطابق نظر خَودو فان روسوم هرگز نخواهد کرد. در ورژنهای قبلی مولد تکرار کند بود چون اطلاعات تنها در یک جهت از مولد عبور میکردند.
:=
، که با نام عملگر والروس شناخته میشود، توصیف شد؛ که مقادیر را به متغییرها تخصیص میدهد. ==
مقدار را مقایسه میکند در مقابل جاوا که برای اعداد مقدار را مقایسه میکند. در پایتون میتوان مقایسه را به صورت زنجیره ای انجام داد: مثلاً به صورت مقابل a <= b <= c
.and
, or
, not
عملگرهای منطقی نام دارند.x if c else y
نوشته میشوند.[1, 2, 3]
نوشته میشوند و تغییرپذیر هستند؛ به همین دلیل نمیتواند به عنوان کلید دیکشنری استفاده شود. (کلیدهای دیکشنری باید تغییرناپذیر باشند) تیولها به صورت (1, 2, 3)
نوشته میشوند، تغییرناپذیر هستند، تمام اعضای آن نیز باید تغییرناپذیر باشند و میتواند به عنوان کلی استفاده شوند. عملگر +
میتواند برای به هم چسباندن دو تاپل استفاده شود.زبان پایتون دارای سه نوع متد میباشد:
این متدها جز رایجترین و قدرتمندترین متدهای زبان برنامهنویسی پایتون میباشند، این توابع از پارامتر self به عنوان اولین آرگومان در ورودی استفاده میکنند، جالب است بدانید که بدیهی ست که استفاده از سایر ورودیها امکانپذیر است و با استفاده از self که به Instance کلاس اشاره میکند، دسترسی به سایر متدها و attributesهای کلاس امکانپذیر است.
این نوع از توابع با بهکارگیری از دکوراتور داخلی (builtin) classmethod@ ایجاد (و شناخته) میشوند. کلاس متد پارامتر cls را به عنوان اولین آرگومان در ورودی میپذیرند (مثل حالت قبل استفاده از سایر ورودیها نیز امکانپذیر است). cls به اشیای درون کلاس اشاره میکند و نه نمونه ساخته شده از آن، بنابراین Class methodها میتوانند وضعیت کلاس را تغییر دهند.
این متدها با استفاده از دکوراتور staticmethod@ ایجاد (و شناخته) میشوند. در ورودی این نوع متدها پارامتر معناداری مانند cls یا self وجود ندارد اما مانند تمام متدها امکان دریافت ورودی را دارند.
این متدهای کاربرد زیادی در برنامهنویسی پایتون ندارند و به جای آنها میتوان از module functions (توابعی که در یک ماژول دیگر قرار دارد، مثلاً ماژول utils) استفاده کرد.
متدهای استاتیک نیز به کلاسها محدود هستند اما نمیتوانند state کلاس یا نمونه ساخته شده از کلاس را تغییر دهند و تنها به دادههایی که به آنها دسترسی دارند محدود شدهاند. در کل، متدهای استاتیک اطلاعاتی از state کلاس یا نمونه ساخته شده از کلاس ندارند. استاتیک متدها در حقیقت چیزی جز یک callable در یک کلاس نیستند که برای دسترسی به آنها نیازی به نمونه سازی از کلاس نیست.
کاربرد متدهای استاتیک در مواقعی است که تابع وظیفه پردازش مجزایی از سایر فعالیت اعضای کلاس را بر عهده دارد و نیاز به بیشتر برای ایجاد متدهای کاربردی یا محاسباتی است.
پایتون از نوع دهی اردکی استفاده میکند. محدودیت تایپ در زمان کامپایل چک نمیشود؛ بنابراین عمل گرهای روی یک شیء ممکن است شکست بخورند، به این مفهوم که شیء داده شده از یک تایپ مناسب نیست. با اینکه اجباری در تایپ دهی ایستا نیست. نوع دهی پایتون نیرومند است؛ به همین دلیل اعمالی که به خوبی تعریف نشده باشند را منع میکند؛ مانند جمع کردن یک متغیر رشته با عدد.
پایتون به برنامه نویسان اجازه میدهد با استفاده از کلاس، نوعهای دلخواه خودشان را تعریف کنند. نمونههای جدید هر کلاس با فراخوانی آن کلاس ساخته میشوند؛ مثلاً SpamClass()
یا EggsClass()
و خود کلاسها نمونههایی از متاکلاس type
هستند.
پایتون قبل از نسخهٔ ۳٫۰ دو نوع کلاس داشت یکی شیوهٔ قدیم old-style و دیگری شیوهٔ جدید new-style. نحو هر دو مشابه است تفاوت در این است که کلاس object
مستقیماً به ارث برسد یا نه. تمام کلاسهای شیوهٔ جدید object
را به ارث میبرند و نمونهای از type
هستند)
تایپ | تغییرپذیری | توصیف | مثال نحو |
---|---|---|---|
ellipsis | تغییرناپذیر | ایندکس در آرایه نامپای | ... Ellipsis |
NoneType ∗ | تغییرناپذیر | یک شیء که نشان دهندهٔ وجود نداشتن مقدار است و در زبانهای دیگر با نام null شناخته میشود (اشارهگر هیچمقدار) | None |
NotImplementedType ∗ | تغییرناپذیر | یک مکان نگهدارنده که میتواند از طریق اپراتورهای دارای بار اضافی برگردانده شود تا انواع عمل پشتیبانی نشده را نشان دهد. | NotImplemented |
bool | تغییرناپذیر | فقط میتواند دو مقدار به خود بگیرد: درست(True) یا نادرست(False) | True False |
عدد | |||
int | تغییرناپذیر | عدد صحیح | 42 |
long | تغییرناپذیر | وقتی ذخیره کردن یک عدد صحیح سر ریز داشته باشد، با دقتی نامحدود Long بسط خواهد یافت (تنها در پایتون ۲) | 3457876312345678632235674225567773487L |
float | تغییرناپذیر | عدد اعشاری | 3.1415927 |
complex | تغییرناپذیر | عدد مختلط با عدد حقیقی و قسمت موهومی | 3+2.7j |
دنباله | |||
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', False] |
str | تغییرناپذیر | رشتهای از کاراکترها | 'Wikipedia' "Wiki زبان برنامهنویسی پایتون" """Spanning multiple lines""" |
tuple | تغییرناپذیر | مثل list منتها تغییرناپذیر | (4.0 ,'string', True) |
مجموعه | |||
frozenset | تغییرناپذیر | مجموعه (مجموعه از اشیاء که بدون ترتیب تکرار هستند) در صورت هشبل بودن میتواند انواع مختلفی از اشیاء را همزمان بپذیرد. | frozenset([4.0, 'string', True]) |
set | تغییرپذیر | مثل frozenset منتها تغییرپذیر | {4.0 ,'string', True} |
نگاشت | |||
dict | تغییرپذیر | گروهی از جفتهای کلید و مقدار | {"aboli.ig":"instagram"} |
نوعهای قابل فراخوانی | |||
range | تغییرناپذیر | دنبالهای از اعداد است که معمولاً از آن برای حلقه با تعداد مشخصی از تکرار استفاده میشود | range(1, 10) range(10, -5, -2) |
generator | تغییرناپذیر | توابع با سرعت و حجم کمتر از list | (f for f in range(10)) |
همه کلاسها در … | |||
type | تغییرناپذیر | کلاسها خودشان نمونههایی از کلاس type هستند (خودش یک نمونه از خودش است). | type(7) type('wiki') |
^ مستقیما از طریق نام قابل دسترسی نیست.
پایتون همچنین به برنامهنویسها اجازه میدهد که تایپ دلخواه خود را تعریف کنند. این کار با استفاده از کلاسها امکانپذیر است و اغلب برای شیء گرایی در برنامهنویسی استفاده میشود. نمونههای جدید از کلاسها با صدا زدن کلاس ساخته میشوند و کلاسها خودشان نمونههایی از کلاس type
هستند (خودش یک نمونه از خودش است).
در پایتون میتوان با ایجاد متغیرهایی کلاسهای بالا را ذخیره کرد. برای اینکار باید نام متغیر را مساوی مقدار قرار دهید؛ یعنی: g = 2
که جی نام متغیر و ۲ مقدار متغیر است. برای آنکه از طریق خط فرمان مقدار را دریافت کنید، باید از input
استفاده کنید که آن هم در یک متغیر ذخیره میشود:
input('enter str:')
پایتون ۲ بهطور خودکار از عدد استفاده میکند اما پایتون ۳ از رشته بهطور خودکار استفاده میکند. اگر میخواهید از کلاسهایی غیر از رشته استفاده کنید، باید از تبدیلگر استفاده کنید:
int(input('enter age:'))
اگر میخواهید چند متغیر را در یکخط بنویسید، باید ابتدا نام متغیرها و بعد مقادیر را بنویسید:
f , g , h = 1 , 2 , 3
اگر میخواهید به چند متغیر یک مقدار را نسبت دهید، باید ابتدا نام متغیرها و بعد مقدار را بنویسید:
a = b = c = d = 1
==
برای تشخیص آنکه ورودی با مقدار مقدار دادهشده برابر است: g == 2
<>
(پایتون ۲) و =!
(پایتون ۳) برای تشخیص مساوینبودن ورودی و مقدار دادهشده: g != 2
<
برای تشخیص بزرگتر بودن ورودی از مقدار و =<
برای تشخیص بزرگتر یا مساوی بودن ورودی از مقدار.>
برای تشخیص کوچکتر بودن ورودی از مقدار و =>
برای تشخیص کوچکتر یا مساوی بودن ورودی از مقدار.is
برای تشخیص هماهنگی ورودی و مقدار و is not
برای تشخیص هماهنگی نبودنin
برای تشخیص قرارداشتن مقدار در ورودی و not in
برای تشخیص برعکسدر صورت درست بودن به ما True
و در غیر این صورت، False
میدهد
در پایتون میتوان با عملگرهای ریاضی، عملهایی از جمله جمع، تفریق و ضرب و تقسیم را انجام داد:
+
برای جمع: 2+2
-
برای تفریق: 2-2
*
برای ضرب: 2*2
**
برای بهتوان: 2**2
/
برای تقسیم: 2/2
(در پایتون ۲ برای بهدست آوردن بخش اعشار، باید یا هردو یا یکی از اعداد را با نقطه یا نقطهصفر: 7/2. 7.0/2.0 7.0/2
بگذاریم که در پایتون ۳ مشکل حل شد)//
برای خارج قسمت تقسیم: 2//2
%
برای باقی مانده تقسیم: 2%2
این عملگرها بر روی int
، float
str
و list
کار میکنند.
همچنین عملگر |
هم برای ادغام dict
هادر پایتون ۳٬۹ اضافه شد. مثال: {"key1":val1,"key2":val2}|{"key2":val2,"key3":val3}
=+
برای اضافه کردن به متغیر مثلاً 4=+i
یعنی ۴ تا به متغیر i اضافه کن.=-
برای کمکردن از متغیر مثلاً 4=-i
یعنی ۴ تا از متغیر i کم کن.«ماژول» به انگلیسی (Module) به فایلی میگویند که دارای دستورها و تعاریف پایتون است. یک فایل ماژول حاوی کدهای پایتون، برای مثال Test.py، یک ماژول نامیده میشود؛ برای مثال بیان شده، نام ماژول «Test» است. از ماژولها برای تکهتکه کردن برنامهها به فایلهای کوچک و با قابل مدیریت خیلی بهتر استفاده میشود. علاوه بر آن، ماژولها قابلیت استفاده مجدد از کد را فراهم میکنند. کاربران میتوانند به جای کپی کردن تعاریف در برنامههای گوناگون، توابع پر استفاده خود را تعریف و وارد کنند (ایمپورت). در ادامه، روش وارد کردن یک ماژول در پایتون آموزش داده خواهد شد.
برخی از کدها برای خلوتسازی پایتون، در ماژولها وارد شدهاست.
برای وارد کردن ماژول به سه روش از import
استفاده میشود:
import <module name> [as <alias>]
یا
from <module name> import *
یا
from <module name> import <definition 1> [as <alias 1>][, <definition 2> [as <alias 2>]][, ...]
برای ساختن ماژول، ابتدا کلاسها، توابع و متغیرهایی را در یک فایل ذخیره میکنیم و نام فایل را در
قرار میدهیم. (کد فایل را لازم نیست وارد کنید)
برنامهٔ برنامه «سلام، دنیا!» زیر، با استفاده از کتابخانه استاندارد و جریانهای خروجی یک متن را به خروجی استاندارد ارسال مینماید
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)
def fact(number): if number==0: return 1 return number * fact(number-1) n = int(input('Type a number, and its factorial will be printed: ')) if n < 0: raise ValueError('You must enter a non negative integer') print(fact(n))
سیپایتون رویهٔ اصلی پایتون است که در نشست C در استاندارد C۸۹ نوشته شد ولی از چند ویژگی نشست C۹۹ نیز استفاده کردهاست. سیپایتون برنامههای پایتون را به یک بایتکد میانی کامپایل میکند، تا بعد از آن ماشین مجازی آن را اجرا کند. سیپایتون با یک کتابخانه استاندارد بزرگ توزیع شدهاست، که به صورت مخلوطی از C و پایتون نوشته شدهاست. سیپایتون در ورژنهای مختلف روی پلتفرمهای زیادی کار میکند، مثل مایکروسافت ویندوز و بیشتر سیستمهای پیشرفته یونیکس. استفاده و توسعه آن روی پایگاههای محرمانه مانند آمیب، در کنار پایگاههای متداول مانند یونیکس یا مکینتاش، بهطور عمده در این نظر کمک شدهاست.
جایتون برنامههای پایتون را به کد بایت جاوا کامپایل میکند که بدین ترتیب میتواند با هر ماشین مجازی جاوا اجرا شود همچنین این امکان فراهم میشود که توابع کتابخانهای کلاس جاوا از برنامه پایتون به کار گرفته شود. آیرون پایتون از همین شیوه برای اجرای برنامههای پایتون روی چارچوب داتنت استفاده میکند.
پای پای یک مفسر سریع پایتون ۲٫۷ و ۳٫۶ است. پایپای نوعی کامپایلر درجاست که باعث افزایش سرعت نسبت به سیپایتون میشود ولی در عوض از بسیاری از کتابخانهها که به زبان سی نوشته شدهاند نمیتوان با آن استفاده کرد.
پایتون بدون پشته ، انشعابی از سی پایتون است که ریز برنامهها را اجرا میکند و از پشته حافظه استفاده نمیکند. سی پایتون از قفل مفسر سراسری استفاده میکند تا وقتی برنامه پایتون بدون پشته، وابسته به سیستم عامل است و میتواند به صورت همزمان اجرا شود، در هر لحظه فقط به یک زیر برنامه اجازه اجرا داده شود. پایتون برای استفاده در میکرو کنترلرها یا وظایف محدود دیگر پایگاههای مرجع، متناسبتر است. پیشبینی میشود که پایتون بدون پشته بتواند تقریباً روی همان پایگاهی که سی پایتون اجرا میشود، اجرا شود. پایپای نیز یک ورژن بدون پشته دارد.
میکرو پایتون و سیرکیوت پایتون پیادهسازی پایتون ۳ای هستند که برای ریزکنترلگرها بهینه شدهاند.
چندین برنامه در بسته مفسر پایتون با برنامههای کاربردی (یا آغازگر) وجود دارد که مستقلاً اجرا میشوند مانند یونیکس، لینوکس، ویندوز، آمیگااواس ۴ یا مکاواس ده. بسیاری از کتابخانههای سه قسمتی (و حتی بعضی از یک قسمتیها) فقط روی ویندوز، لینوکس، بیاسدی و مکاواس ده موجود هستند.
کامپایلرهای درجای دیگری که هماکنون پشتیبانی نمیشوند:
نوکیا در سال ۲۰۰۵ یک مفسر پایتون برای موبایلهای سری ۶۰ با نام PyS۶۰ منتشر کرد که شامل بسیاری از ماژولهای سیپایتون بود و همچنین ماژولهای اضافهای به منظور یکپارچه شدن با سیستمعامل سیمبیان نیز داشت. این پروژه به روز نگاه داشته میشد تا روی همه سکوهای مختلف اس ۶۰ اجرا شود. نوکیا ان۹۰۰ نیز از پایتون همراه با کتابخانهٔ ویجتهای جیتیکی پشتیبانی میکرد.
چندین کامپایلر به زبانهای سطح بالای شیء گرا وجود دارد خواه زبان مبدأ پایتون محدود نشده باشد خواه زیر مجموعههای محدود شدهٔ آن یا زبانهای مشابه پایتون باشند:
توسعهٔ پایتون از طریق پیئیپی PEP به معنای پروپوزال بهینهسازی پایتون انجام میشود که سازوکار اولیه برای مطرح کردن ویژگیهای عمدهٔ جدید و جمعآوری ورودی جامعهٔ پایتون دربارهٔ مشکلات و مستندسازی طرح تصمیمگیریهای پایتون است؛ برای نمونه سبک برنامهنویسی پایتون در پیئیپی ۸ توضیح داده شدهاست. جامعهٔ پایتون و شورای مدیریتی پیئیپیها را بررسی میکنند. توسعهٔ این زبان متناظر با توسعهٔ پیادهسازی مرجع (سیپایتون) است. میلینگ لیست python-dev انجمن اولیه برای توسعهٔ این زبان است. مشکلات نرمافزاری آن در سایت ردیابی باگ روندآپ که در bugs.python.org میزبانی میشود مورد بحث قرار میگیرند.
تا سال ۲۰۱۷ توسعهٔ آن در مخزن نرمافزاری ای خود میزبان انجام میشد که از مرکوریال استفاده میکرد ولی از ژانویهٔ سال ۲۰۱۷ کد منبع پایتون به گیتهاب منتقل شد.
نسخههای رسمی سیپایتون به سه صورت جدا انتشار مییابند بسته به این که به کدام بخش از عدد نسخه افزوده میشود از هم متمایز میشوند:
پایتون یک کتابخانه استاندارد بزرگ دارد که از آن به عنوان یکی از بزرگترین توانایی پایتون یاد میشود، مشروط به اینکه ابزارهای از پیش نوشته شده، با بسیاری از وظایف سازگار باشد. ماژولهای کتابخانه استاندارد میتوانند به شیوه ماژولهای نوشته شده در سی یا پایتون آرگومان دهی شوند. اخیراً کتابخانههای C++ به یک کتابخانه به نام Boost.Python رشد یافتهاست، برای ایجاد قابلیت همکاری بین C++ و پایتون. به دلیل تنوع گسترده در ابزارهای تولید شده توسط کتابخانه استاندارد، این کتابخانه با توانایی استفاده یک زبان سطح پایین ترکیب شده، مثل C و C++ که البته به عنوان واسط بین کتابخانههای دیگر است، پایتون میتواند یک واسط قوی بین زبانها و ابزارها باشد.
کتابخانهٔ استاندارد با تعداد زیاد فرمتها و پروتکلهایی که حمایت میکند (مانند امآیامدی و اچتیتیپی)، خصوصاً برای نوشتن علائم اینترنت مناسب است. پایتون همچنین ماژولهایی برای ایجاد واسط کاربر گرافیکی، اتصال به پایگاه داده رابطهای، تولید اعداد شبه تصادفی، محاسبات با دقت دلخواه اعشاری، دستکاری عبارات با قاعده و آزمایش واحد دارد. بعضی از قسمتهای کتابخانهٔ استاندارد در سند مشخصات توضیح داده شدهاند. (مثل WSGI wsgiref
که پیرو PEP 333 است) اما اکثریت ماژولها اینگونه نیستند. آنها از طریق کدها، اسناد داخلی، و دنباله تست شان (اگر موجود باشد) تعیین میشوند. اگر چه، به دلیل اینکه کد پایتون اکثر کتابخانههای استاندارد، چندسکویی است، فقط ماژولهای اندکی هستند که باید برای پیادهسازیهای دیگر تغییر داده شوند یا مجدّداً نوشته شوند. در نوامبر 2019 (PyPI) مخزن رسمی برای نرمافزارهای شخص سوم پایتون بالغ بر ۲۰۰۰۰۰ پکیج دارد. پکیجهای پایتون در زمینههای گوناگونی کاربرد دارند:
بیشتر پیادهسازیهای پایتون (شامل سی پایتون، اولین پیادهسازی) میتوانند مثل یک مفسر خط فرمان عمل کنند، برای زمانی که کاربر رشته شرط را وارد میکند و فوراً نتیجه را میپذیرد. خلاصه پایتون به عنوان یک برنامه واسط عمل میکند. وقتی صرف دیگر شیوههای اجرا (کامپایل کد بایت یا کامپایل کد محلی) به صورت یک رشته صرف ذخیره میشود، یک افزایش سرعت در هزینههای متقابل به وجود میآید، بنابراین آنها معمولاً فقط خارج از مفسر خط فرمان استفاده میشوند. (وقتی یک ماژول وارد میشود)
برنامههای واسط دیگر، امکانات تحت آن را در مفسر بیسیک افزایش میدهند، شامل آیدیالئی و آیپایتون. وقتی عموماً از برنامه واسط پایتون پیروی میشود، خصوصیاتی مشابه تکمیل خودکار، نگه داشتن زمان اجرای برنامه و نشان دادن صرف پیادهسازی میشود.
برای پایتون واسط گرافیکی کاربرهای بسیاری نوشته شدهاست که پرکاربردترین آنها به شرح زیر است:
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 و جاوا) بودهاست.پایتون در سالهای ۲۰۰۷ ،۲۰۱۰ و ۲۰۱۸ به عنوان زبان برنامهنویسی سال انتخاب شدهاست.
سازمانهای بزرگی مثل گوگل، یاهو، سرن، فیسبوک، ناسا از پایتون استفاده میکنند. ITA نیز از پایتون برای بعضی از اجزای خود استفاده میکند. همچنین شبکهٔ اجتماعی ردیت نیز بهطور کامل در پایتون نوشته شدهاست.
پایتون به عنوان یک زبان اسکریپت نویسی میتواند در اپلیکیشنهای وب استفاده شود مثلاً استفاده از mod_wsgi برای وب سرور آپاچی. چارچوبهای نرمافزاری تحت وب مثل جنگو، پایلونز، توربوگیرز، تورنادو، فلسک، باتل، زوپ به توسعه دهندگان در نگهداری و طراحی اپلیکیشنهای پیچیده کمک میکنند. Pyjs و آیرون پایتون میتوانند برای توسعهٔ اپلیکیشنهای ایجکس پایهٔ سمت کلاینت استفاده شوند. از اسکیوال الکمی میتوان در نگاشت دادهها بر پایگاه دادهٔ رابطهای استفاده شود. تویستد یک فرم ورک برای برنامهنویسی ارتباط بین کامپیوترها است مثلاً دراپ باکس از آن استفاده میکند.
کتابخانههایی مثل نامپای، سایپای و متپلاتامکان استفادهٔ اثر بخش از پایتون در محاسبهٔ علمی را فراهم میآورد همچنین کتابخانههای تخصصی بایوپایتون و آستروپای که در حوزهٔ خاصی کارایی دارند. نرمافزار ریاضی سیج مث که دارای یک رابط کاربری دفترچه ای به زبان پایتون است: کتابخانهٔ این نرمافزار بسیاری از مباحث ریاضی را پوشش میدهد. مثل جبر، ترکیبیات، محاسبات عددی، نظریهٔ اعداد و حسابان.
پایتون در نرمافزارهای بسیاری به عنوان زبان اسکریپت نویسی استفاده میشود نرمافزارهایی مثل آباکوس که از روش اجزاء محدود استفاده میکند، فریکد که اجسام سه بعدی پارامتری را مدلسازی میکند. بستههای انیمیشن سه بعدی مثل تری دی مکس , بلندر , سینما ۴بعدی، لایتویو، هودینی، مایا، مودو , موشن بیلدر، سافتایمیج، نرمافزار ایجاد جلوههای ویژه مثل نیوک , برنامهٔ دستکاری تصاویر دو بعدی مثل گیمپ اینکاسکیپ، اسکربس و پینت شاپ پرو، نرمافزارهای نت نویسی مثل اسکور رایتر و کپلا. گنو دیباگر از پایتون برای پرینت زیبا استفاده میکند تا ساختارهای پیچیده مثل C++ کانتینر را نشان دهد. شرکت ازری هماکنون در حال ترقی دادن پایتون به عنوان بهترین انتخاب برای نوشتن فایل آغازگر در آرک جیآیاس است. همچنین از پایتون در بازیهای ویدئویی استفاده میشود. همچنین پایتون به عنوان اولین زبان از سه زبان گوگل اپ انجین پذیرفته شدهاست دو زبان دیگر زبانهای جاوا و گو هستند.
از پایتون استفاده وسیعی در صنعت امنیت اطلاعات میشود. مثل توسعهٔ اکسپلویت.
پایتون در پروژههای هوش مصنوعی و یادگیری ماشینی استفاده میشود کتابخانههایی که در این کار استفاده میشوند کتابخانههایی مثل تنسورفلو، کرس، پایتورچ و سایکیت-لرن هستند. پایتون به عنوان زبان اسکریپت نویسی با معماری ماژولار و نحو ساده و ابزار پردازش متن قوی برای پردازش زبانهای طبیعی استفاده میشود.
پایتون در بسیاری از سیستم عاملها به عنوان جزء استاندارد وجود دارد. پایتون در سیستم عاملهای توزیع لینوکس، آمیگااواس ۴، فری بیاسدی، نتبیاسدی، اوپنبیاسدی و مکاواس میتواند از طریق خط فرمان (ترمینال) استفاده شود. ردهت لینوکس و فدورا هر دو از نصاب پایتونی آناکوندا استفاده میکنند. لینوکس جنتو از پایتون در سیستم مدیریت بسته، یعنی پورتج استفاده میکند. پاردوس از آن برای مدیریت و در طول راهاندازی سیستم استفاده میکند.
طراحی و فلسفهٔ پایتون بر زبانهای زیادی تأثیر گذاشتهاست:
ویکیکتاب دارای کتابی پیرامون موضوع کتاب عصر پایتون است |
This article uses material from the Wikipedia فارسی article پایتون (زبان برنامهنویسی), which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). محتوا تحت CC BY-SA 4.0 در دسترس است مگر خلافش ذکر شده باشد. Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki فارسی (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.