فلسفه برنامه نویسی
پایتون یک زبان برنامه نویسی چند الگویی است. به این معنی که بیشتر برنامه نویسهای قدرتمند برای وقتی یک مدل برنامه نویسی را انتخاب میکنند، مجاز به چندین مدل هستند: شیء گرایی و برنامه نویسی ساخت یافته کاملاً تحت پوشش هستند، و تعدادی از خصوصیات زبانهای برنامه نویسی هستند که برنامه نویسی تابعی و ظاهر سازی را پشتیبانی میکنند. پایتون از تایپ پویا و یک ترکیبی از شمارش مرجع و یک حلقه کشف و بازیافت قسمتهای هدر رفته حافظه برای مدیریت حافظه، استفاده میکند. یک ویژگی مهم پایتون تحلیل نام پویا است، که روشها و نام متغیرها را در طول اجرای برنامه به هم ملحق میکند.
هدف دیگر طراحی زبان آسان کردن توسعه پذیری است. ماژولهایی که تازه ساخته شدهاند، بهسادگی در C و C++ نوشته میشوند. پایتون همچنین میتواند به عنوان زبان توسعه برای ماژولها و کاربردهای موجود که به برنامه واسط قابل برنامه ریزی نیاز دارد، استفاده شود. این طرح که یک زبان هسته کوچک با یک کتابخانه استاندارد بزرگ و یک مفسر آسان توسعه پذیر همراه باشد، توسط Van Rossum بیان شد.
طرح پایتون به پشتیبانی محدود برای برنامه نویسی تابعی به شیوه لیسپ، ارائه شد. اگر چه، تشابههای عمدهای بین پایتون و زبان خانواده لیسپ وجود دارد. این کتابخانه دو ماژول دارد (تکرار و تابعی) که ابزارهای تابعی را با اقتباس از هاسکل و ام ال استاندارد پیاده سازی میکند.
وقتی انتخابهایی در روششناسی کدها ارائه شد، پایتون نحوهای فراوان را کنار گذاشت. همچنانکه با پرل، توسعه دهندگان پایتون فوراً یک فرهنگ یا ایدئولوژی را بر مبنای آنچه از یک زبان میخواهند، ترقی دادند، ساختار زبانها زیبا، آشکار و ساده شد. Alex Martelli این مطلب را در کتاب خود قرار داد: “برای توضیح برخی مسائل، در فرهنگ پایتون تعریفی مطرح نشدهاست.«پایتون روش پرل را (بیش از یک روش در انجام آن وجود دارد) در طراحی زبان در حمایت از» باید یک راه – و ترجیحاً فقط یک راه – آشکار برای انجام آن وجود دارد." رد کرد.
پایتون از بهینه سازی بی موقع اجتناب کرد، و بعلاوه به هم جور کردن قسمتهای غیر ضروری سی پایتون را که افزایش سرعت نهایی در هزینه را ارائه میکرد، رد کرد. آن گاهی اوقات با نام " slow " شناخته میشود. اگر چه، بیشتر مسائل چندان بحرانی نیستند، و همینطور سرعت سختافزار کامپیوتر با سرعت نمائی رو به رشد است. وقتی سرعت یک مسئله باشد، برنامه نویسان پایتون بیشتر تلاش میکنند تا عملیات محدود را با بهبود الگوریتم یا تغییر ساختار داده، بهینه کنند.