بايثون (لغة برمجة)
قالب:عن قالب:بطاقة لغة برمجة بايثون قالب:إنج هي لغة برمجة، عالية المستوى سهلة التعلم مفتوحة المصدر قابلة للتوسيع، تعتمد أسلوب البرمجة الكائنية. لغة بايثون هي لغة مُفسَّرة، ومُتعدِدة الاستخدامات، وتستخدم استخدامًا واسعًا في العديد من المجالات، كبناء البرامج المستقلة باستخدام الواجهات الرسومية وفي تطبيقات الويب، ويمكن استخدامها كلغة برمجة نصية للتحكم في أداء العديد من البرمجيات مثل بلندر. بشكل عام، يمكن استخدام بايثون لعمل البرامج البسيطة للمبتدئين،[ِ ١] ولإنجاز المشاريع الضخمة في الوقت نفسه. غالباً ما يُنصح المبتدؤون في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسرع اللغات البرمجية تعلماً.[١]
طُوِّرت بايثون في معهد الرياضيات والمعلوماتية الهولندي (قالب:اختصار مخفي) في مدينة أمستردام على يد جايدو فان روسم في أواخر ثمانينات القرن العشرين، وكان أول إعلان عنها في عام 1991م. كُتبت نواة اللغة باستعمال لغة سي. أطلق روسم الاسم «بايثون» على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون.[٢]
تتميز بايثون بمجتمعها النشط، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة التي برمجها أشخاص من ذلك المجتمع. مثلاً، هناك مكتبة قالب:اختصار مخفي التي توفر مجموعة من الدوال من أجل برمجة الألعاب. يمكن لبايثون أيضاً التعامل مع العديد من أنواع قواعد البيانات مثل قالب:اختصار مخفي وغير ذلك.[٣]
تدعم بايثون أنماط برمجة متعددة هي التوجيه الكائني، البرمجية جانبية التوجيه والبرمجة الوظيفية. تُستخدم بايثون عادةً مثل العديد من لغات البرمجة الديناميكية كلغة برمجة نصية. بايثون لديها نموذج مفتوح للتطوير، قائم على مجتمع بايثون البرمجي ومدعوم من مؤسسة برمجيات بايثون. والتي تحافظ على تعريف اللغة في التنفيذ المرجعي لسي بايثون.
أصل التسمية
اشتق اسم بايثون من الفرقة الكوميدية البريطانية مونتي بايثون نتيجة لتأثر فان روسم بمشاهدة عروضها أثناء عمله على تطوير اللغة.[ِ ٢] تظهر مونتي بايثون من حين لآخر في شيفرة بايثون البرمجية وثقافتها.[٤] على سبيل المثال، السبام والبيض هي المتغيرات ما وراء البنية الأكثر شيوعاً في أدب لغة بايثون عوض متغير فو وبار التقليدي.[٤][٥] يلاحظ أيضًا أن وثائق بايثون الرسمية تحيل إلى المشاهد القصيرة التي قدمتها فرقة مونتي بايثون.[٦][٧]
تستخدم البادئة باي- قالب:إنج للإشارة إلى أي شيء مُتعلِّق بهذه اللغة. على سبيل المثال، تنفيذات بايثون ومكتباتها مثل قالب:اختصار مخفي ربط برمجي لقالب:اختصار مخفي ببايثون، قالب:اختصار مخفي وقالب:اختصار مخفي اللذان يربطان كلاً من كيوت وجتك ببايثون.
نبذة تاريخية

بدأ التفكير في إنشاء لغة بايثون أواخر الثمانينيات من القرن العشرين[٢] من طرف جايدو فان روسم في معهد الرياضيات والمعلوماتية بهولندا كخليفة للغة البرمجة اي بي سي (والتي بدورها مستوحاة من سيتل).[٨] وأرادوا منها أن تكون قادرة على معالجة الحالات الاستثنائية والتفاعل مع نظام التشغيل أميبا.[٩] بالمقابل، لم يبدأ تنفيذ الفكرة حتى ديسمبر 1989.[١٠]
تحمّل فان روسم مسؤولية إدارة المشروع منفردًا، وذلك بصفته المطور الرئيسي، حتى قالب:تاريخ، عندما أعلن عن «إجازته الدائمة» من مسؤولياته كدكتاتور بايثون الخيري لمدى الحياة، وهو اللقب الذي منحه له مجتمع بايثون ليعكس التزامه طويل الأمد بصفته صانع القرار الرئيسي للمشروع.[١١] وهو يشارك الآن في القيادة عضوًا في مجلس التوجيه المكون من خمسة أشخاص.[١٢][١٣][١٤]
أُصدرت النسخة الثانية من بايثون (بايثون 2.0) في قالب:تاريخ مع العديد من الميزات الجديدة الرئيسية، بما في ذلك تحديد دوري (حلقي) وجامع القمامة ودعم يونيكود.[١٥]
أُصدرت النسخة الثالثة من بايثون (بايثون 3.0) في قالب:تاريخ.وكانت مراجعة رئيسية للغة لكنها ليست متوافقة بالكامل مع الإصدارات السابقة.[١٦] من ميزاتها الرئيسية: الحمل العكسي في سلاسل إصدار بايثون 2.6.x [١٧] و2.7.x. تتضمن إصدارات بايثون 3 وظيفة 2to3، التي تعمل تلقائيًا (جزئيًا على الأقل) على ترجمة كود (التعليمات البرمجية) بايثون 2 إلى بايثون 3.[١٨][ِ ٣]
حددت نهاية صلاحية بايثون 2.7 في البداية عام 2015 ثم أُجل إلى عام 2020 خشية عدم إمكانية نقل مجموعة كبيرة من التعليمات البرمجية الموجودة بسهولة إلى بايثون 3.[١٩][٢٠]
في يناير 2019، انتخبت نواة بايثون النشطة من المطورين بريت كانون، نيك كوغلان، باري وارسو، كارول فايلينغ وفان روسم لتشكيل الأعضاء الخمسة «للمجلس التوجيهي» لقيادة المشروع.[٢١]
مميزات بايثون
تعد بايثون لغة برمجية سهلة نسبيًّا بالمقارنة مع جافا وسي++ إضافة إلى أنها لغة برمجة متعددة الأنماط الفكرية (برمجة متعددة البرادايم). تدعم البرمجة كائنية التوجه والبرمجة المهيكلة دعمًا كاملًا، كما تدعم بايثون البرمجة الوظيفية والبرمجة جانبية المنحى (بما في ذلك عن طريق البرمجة الوصفية[٢٢] والكائنات الوصفية «خاصةً الطرق»).[٢٣] يمكنها أيضًا دعم العديد من الأنماط الفكرية الأخرى عن طريق الامتدادات، بما في ذلك التصميم بالعقود[٢٤][٢٥] والبرمجة المنطقية.[٢٦]
دعم للبرمجة الوظيفية
زيادة على ذلك، فتصميم بايثون يقدم بعض الدعم للبرمجة الوظيفية في تقاليد ليسب. فلدى بايثون وظائف (دوال) filter، reduce، map.[٢٧] كما تتوفر على اشتمال القائمة والقواميس والمجموعات وتعبيرات المولد. تحتوي المكتبة القياسية على وحدتين (itertools وfunctools) التي تنفذ أدوات وظيفية مستعارة من هاسكل وإم أل المعيارية.[٢٨]
سهلة التعلم
تعتبر بايثون لغة سهلة للغاية لتبدأ بها في تعلم البرمجة. بايثون تحتوي تراكيب سهلة بشكل غير معتاد، كما سبق ذكره. فبايثون تسعى جاهدة إلى بناء قواعد نحوية أبسط وأقل تشويشًا مع منح المطورين خيارًا في منهجية البرمجة الخاصة بهم. على النقيض من شعار بيرل قالب:اقتباس مضمن، فإن بايثون تتخذ الشعار قالب:اقتباس مضمن فلسفةً للتصميم.[٢٩] كتب أليكس مارتيلي، وهو زميل في مؤسسة بايثون للبرمجيات ومؤلف كتاب «بايثون»، أن قالب:اقتباس مضمن.[٣٠][ِ ١]
حرة ومفتوحة المصدر
بايثون هي مثال على البرمجيات الحرة مفتوحة المصدر. بعبارات بسيطة، يمكنك بحرية توزيع نسخ من هذه البرمجيات، وقراءة الشيفرة (الكود) المصدرية، والقيام ببعض التغييرات عليها واستخدام أجزاء منها في برمجيات حرة جديدة، فالبرمجيات الحرة تقوم على مبدأ المجتمع الذي يتشارك المعرفة.[٣١][ِ ٢]
لغة برمجة عالية المستوى
عند تطوير البرامج ببايثون، لا داعي للاهتمام بالتفاصيل دقيقة المستوى مثل إدارة الذاكرة التي يستخدمها البايثون؛ فبايثون تستخدم نظام أنواع ديناميكيًّا ومزيجًا من التحديد الحلقي ومجمع القمامة والمحدد الحلقي (الدوري) لإدارة الذاكرة. كما تتميز أيضًا بتحليل الاسم الديناميكي (الربط المتأخر)، والذي يربط الطريقة وأسماء المتغيرات أثناء تنفيذ البرنامج.[ِ ٤]
محمولة
نظرا لطبيعتها البرمجية مفتوحة المصدر، فهي تعمل في العديد من المنصات. كل ما يكتب من برامج بايثون يمكن أن يعمل على أي من هذه المنصات دون أن يتطلب ذلك أي تغييرات على الإطلاق إذا كانت دقيقة بما فيه الكفاية لتجنب أي خصائص تعتمد على نظام بعينه.
يمكن استخدام بايثون على لينكس، ويندوز، فري بي إس دي، ماكينتوش، سولاريس، أو إس/2، أندرويد.[٣٢] والعديد من أنظمة التشغيل الأخرى.[ِ ٢]
كائنية التوجه
تدعم بايثون البرمجة الإجرائية وكذلك البرمجة الكائنية. في اللغات إجرائية التوجه، يتمحور البرنامج حول الإجراءات أو الدوال التي ليست سوى قطع من البرامج يمكن إعادة استخدامها. وفي اللغات كائنية التوجه، يتمحور البرنامج حول الكائنات التي تجمع بين البيانات والوظائف (الطرق). وبايثون لغة قوية جدًّا وأيضًا تبسيطية للقيام بالبرمجة الكائنية خاصة عند مقارنتها بلغات مثل سي++ أو جافا.[٢٢]
قابلة للامتداد
بدلاً من دمج جميع وظائفها (طرقها) في نواتها، صممت بايثون لتكون قابلة للامتداد بدرجة كبيرة. هذه الوحدة النمطية المدمجة جعلتها شائعة بشكل خاص كوسيلة لإضافة واجهات قابلة للبرمجة إلى التطبيقات الحالية. تنبأت رؤية فان روسم للغة أساسية صغيرة مع مكتبة قياسية كبيرة ومترجمة (مجمّعة) قابلة للتوسيع بسهولة مستفيدة من أخطاء آي بي سي، التي تبنت النهج المعاكس.[٢]
فلسفة بايثون
لخصت فلسفة اللغة الأساسية في وثيقة زن بايثون (بيب 20)، والتي تتضمن حِكمًا مثل:[٢٩]
- الجميل أفضل من القبيح.
- الصريح أفضل من الضمني.
- البسيط أفضل من المُركّب.
- المُركّب أفضل من المعقد.
- قابلية القراءة مهمة.
يسعى مطورو بايثون جاهدين لتجنب التحسين السابق لأوانه، ويرفضون التصحيحات للأجزاء غير الحرجة من تطبيق (تنفيذ) سي بايثون المرجعي الذي من شأنه أن يوفر زيادات هامشية في السرعة على حساب الوضوح.[٣٣] فعندما تكون السرعة مهمة، يمكن لمبرمج بايثون نقل الوظائف (الدوال) الحساسة زمنياً إلى نماذج التمديد المكتوبة بلغات مثل سي، أو باستخدام باي باي، وهو مترجم (مجمّع) آنيّ. سييثون متاح أيضًا، والذي يترجم نص بايثون لنص بلغة سي ويقوم بإجراء استدعاءات واجهة برمجة التطبيقات (API) مباشرة على مستوى اللغة سي إلى مفسر بايثون.
أحد الأهداف المهمة لمطوري بايثون هو الحفاظ على المتعة في الاستخدام.[٣٤] ينعكس هذا في اسم اللغة - تكريمًا لمجموعة بريطانية للكوميديا السيريالية مونتي بايثون - وفي المناهج المرحة أحيانًا للبرامج التعليمية والمواد المرجعية، مثل الأمثلة التي تشير إلى البريد العشوائي والبيض (من الألبوم المشهور لمونتي بايثون) والاستعاضة عن ذلك بفو بار القياسية.[٣٥][٣٦]
النحو (بناء اللغة) والدلالات
صممت بايثون لتكون لغة ذات مقروئية عالية، تنسيقها مرتب بصرياً؛ فهي عادةً ما تستخدم كلمات إنجليزية شائعة الاستخدام في حين تستخدم لغات البرمجة الأخرى علامات الترقيم. على النقيض من العديد من اللغات الأخرى، لا تستخدم بايثون الأقواس المعقوفة { } لتحديد كتل الكود، والفاصلة المنقوطة ; بعد العبارات البرمجية اختيارية. لدى بايثون استثناءات نحوية وحالات خاصة أقل بكثير من لغة سي أو باسكال.[٣٧]
إزاحة
تستخدم بايثون الإزاحة بالفراغات بدلًا من الأقواس المعقوفة { } أو الكلمات المفتاحية لتحديد كتل الكود. الزيادة في الإزاحة تأتي بعد بعض العبارات؛ إنقاص الإزاحة علامة على انتهاء الكتلة الحالية.[٣٨] وبالتالي، فإن البنية المرئية للبرنامج تمثل بدقة البنية الدلالية للبرنامج.[٣٩] تُسمى هذه الميزة أحيانًا قاعدة التسلل قالب:إنج، والتي تشترك فيها بعض اللغات الأخرى، ولكن في معظم لغات البرمجة، ليس للإزاحة أي معنًى دلالي.
العبارات البرمجية والتحكم بالتدفق
تتضمن عبارات بايثون البرمجية (من بين أمور أخرى):
- عبارة مساواة (تستخدم إشارة المساواة
=) تعمل بشكل مختلف عن بقية لغات البرمجة الأمرية وهذه الآلية الأساسية التي تتضمن «طبيعة إصدارات بايثون الخاصة بالمتغيرات» تنير الطريق للعديد من ميزات اللغة الأخرى. نأخذ مثالاً عن المساواة في لغة سي:x = 2، يُترجم إلى «اسم المتغير المكتوب x يتلقى نسخة من القيمة العددية 2». تنسخ القيمة (اليمنى) في موقع تخزين مخصص بحيث يكون اسم المتغير (الأيسر) هو العنوان الرمزي. الذاكرة المخصصة للمتغير كبيرة بما يكفي (من المحتمل أن تكون كبيرة جدًا) للنوع المعرّف. في أبسط حالة لإسناد بايثون (assignment)، وإذا قمنا بنفس العملية في بايثون (أيx = 2)، فإنه يُترجم إلى «اسم (generic عام) x يستقبل مرجعًا لكائن منفصل مُخصص ديناميكيًا نوعه العددي (int عدد صحيح) قيمته 2». هذا يسمى ربط الاسم بالكائن (binding). نظرًا لأن موقع تخزين الاسم لا يحتوي على القيمة المشار إليها، فمن غير المناسب تسميته متغيرًا. قد يتم إعادة الأسماء لاحقًا في أي وقت إلى كائنات من أنواع مختلفة اختلافًا كبيرًا، بما في ذلك السلاسل النصية strings والإجراءات والكائنات المعقدة مع البيانات والطرق، وغير ذلك. التعيينات (مساواة) المتتالية لقيمة مشتركة لأسماء متعددة، على سبيل المثال،x = 2؛y = 2؛z = 2ينتج عن تخصيص مساحة تخزين (على الأكثر) لثلاثة أسماء وكائن عددي واحد، يتم ربط جميع الأسماء الثلاثة به. نظرًا لأن الاسم هو حامل مرجع عام (generic reference holder)، فمن غير المعقول ربط نوع بيانات ثابت به. ومع ذلك، في وقت معين، سيتم ربط الاسم بكائن ما، والذي سيكون له نوع؛ وبالتالي هناك كتابة ديناميكية. - العبارة إذا
if، التي تنفذ مجموعة الكود بشكل مشروط (أي لا ينجز إلا إذا توفّر هذا الشرط)، وتستخدم مع عبارة عدا ذلكelseوelifاختصاراً لعبارة (عدا ذلك إذا else-if). - العبارة من أجل
for، التي تتكرر فوق كائن قابل للتكرار بشكل حلقي، حيث تلتقط كل عنصر في متغير محلي لاستخدامه بواسطة مجموعة الكود البرمجي المرفقة.[ِ ٥] - العبارة طالما
while، التي تنفذ مجموعة الكود البرمجية طالما تحقق الشرط. - العبارة جرّب
try، التي تسمح بالتعامل مع الاستثناءات المرفوعة في مجموعة الكود المرفق والتعامل معها باستثناءexceptالبنود؛ يضمن أيضًا تشغيل كود التنظيف في مجموعة الكود البرمجية الأخيرة دائمًا بغض النظر عن كيفية خروج الكتلة. - العبارة رفع
raiseتستخدم لرفع استثناء محدد أو إعادة رفع استثناء تم اكتشافه. - العبارة صنف
class، التي تقوم بتنفيذ مجموعة من الكود وتربط مساحة الاسم المحلية الخاصة بها بصنف، لاستخدامها في البرمجة كائنية التوجه. - العبارة تعريف
def، التي تُعرّف دالة أو طريقة. - العبارة مع
with، من بايثون2.5 التي صدرت في سبتمبر 2006 [٤٠]، والتي ترفق كتلة الكود داخل مدير السياق (على سبيل المثال، الحصول على قفل قبل تشغيل كتلة الكود وإطلاق القفل بعد ذلك، أو فتح ملف ثم إغلاقه)، والسماح لاكتساب الموارد الذي هو سلوك يشبه التهيئة (RAII) ويحل محل العبارة الاصطلاحية محاولة/أخيراً try/finally.[٤١] - العبارة توقف
breakتعني أخرج من الحلقة. - العبارة تابع
continueتتجاوز التكرارية الحالية وتتابع للعنصر التالي. - العبارة تجاوز
pass، والتي تُستخدم في حالة «لا عملية». تُستعمل عند الحاجة لإنشاء كتلة كود فارغة. - العبارة تأكيد
assert، المستخدمة أثناء تصحيح الأخطاء للتحقق من الشروط التي يجب تطبيقها. - العبارة تحصيل
yieldتعيد قيمة من الدالة المولّدة. بدءاً من بايثون 2.5،yieldهي أيضاً عملية. هذا الشكل يستخدم عادةً لتنفيذ الروتينات المساعدة. - العبارة استيراد
import، وتستخدم لاستيراد نماذج يمكن استخدام دوالها ومتغيراتها في البرنامج الحالي. يوجد ثلاث طرق لاستخدام العبارة استيراد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والتي تغيرت إلى دالة اطبع()printفي بايثون 3.
بايثون لا تدعم التحسين الخاص الاستدعاء الذيلي أو (استمرارية الدرجة الأولى)، كما أعلن غايدو فان روسم أنه لن تدعم أبداً.[٤٢][٤٣] ومع ذلك، يتوفر دعم أفضل للوظائف الشبيهة بالروتين المساعد في النسخة 2.5، من خلال توسيع مولدات بايثون.[٤٤] قبل نسخة 2.5، كانت المولدات مكررات كسولة، والتي يتم تمرير المعلومات من اتجاه واحد خارج المولد. ابتداءً من بايثون 2.5، صار من الممكن تمرير المعلومات مرة أخرى إلى دالة المولد، وبدءاً من بايثون 3.3، صار من الممكن أيضا تمرير المعلومات من خلال تعدد مستويات المكدس.[٤٥]
تعبيرات
بعض تعبيرات بايثون تشبه لغات مثل سي وجافا، بينما البعض الآخر لا:
- الجمع والطرح والضرب في بايثون مماثلة لما في جافا وسي، ولكن سلوك القسمة يختلف. هناك نوعان من القسمة في بايثون: التقسيم الكامل (أو تقسيم العدد الصحيح)
//وتقسيم الفاصلة ا (لعائمة)/.[٤٦] أضافت بايثون أيضًا العامل**من أجل الأس. - ابتداءً من بايثون 3.5، أستحدث عامل جديد
@، لغرض استخدامه من قبل المكتبات مثل نمباي لضرب المصفوفات.[٤٧][٤٨] - ابتداءً من بايثون 3.8، أُدرج العامل التالي
:=، الذي يطلق عليه «عامل الفظّ»'walrus operator'. يقوم بتعيين القيم للمتغيرات كجزء من تعبير أكبر.[٤٩] - في بايثون
==تقارن الأعداد من حيث القيمة (-0.0==0.0هيtrue)، بالمقابل في جافا تقارن عدديا بالقيمة[٥٠] أو الكائنات بالعنوان المرجعي.[٥١] (من الممكن في جافا مقارنة القيمة بالكائنات عن طريق طريقة()equals). معامل بايثونisيستخدم ليقارن هوية الكائنات (أي المقارنة بالعنوان المرجعي). في بايثون، المقارنات يمكن تقييدها، على سبيل المثالa <= b <= c. - بايثون تستخدم الكلمات
and,or,notللعمليات البوليانية بدل من الرموز&&,||,!المستخدمة في جافا ولغة سي. - بايثون لديها نوع من التعبيرات تحت مصطلح اشتمال قائمة. مدّت بايثون 2.4 قائمة الإدراك بتعبير أكثر شمولية أي تعبير المولّد.[٢٧]
- الدوال المجهولة تنفذ باستخدام تعبير لامبدا؛ ولكنها محددة؛ وفي جسمها البرمجي يمكن أن يتواجد تعبير واحد.
- التعبيرات الشرطية في بايثون مكتوبة كالتالي
x if c else y[٥٢] (يختلف عن بقية اللغات الأخرى في ترتيب المعاملات من المعامل الشائعc ? x : yعن بقية اللغات المختلفة). - تميز بايثون بين القوائم والتعديدات (tuples). القوائم مكتوبة كـ
[1, 2, 3]، قابلة للتغيير، ولا يمكن استخدامها كمفاتيح القواميس (مفاتيح القاموس غير قابلة للتغيير في بايثون). أما التعديدات:(1, 2, 3)، فهي غير قابلة للتغيير وبالتالي يمكن استخدامها كمفاتيح القواميس، شريطة أن تكون جميع عناصر التعديد غير قابلة للتغيير. يمكن استخدام عامل+لسَلسَّلة لتعديدتان، والتي لا تُعدل محتوياتها بشكل مباشر، بل تنتج تعديدة جديدة تحتوي على عناصر التعديدتين المقدمة. وبالتالي، بالنظر إلى المتغيرtالذي يساوي مبدئيًا(1, 2, 3), فإن إجراءt = t + (4, 5)يقيِّم أولاًt + (4, 5)، والذي ينتج(1, 2, 3, 4, 5)، والتي تعين بعد ذلك إلىt، وبالتالي «تعديل محتويات»tبشكل فعال، مع التوافق مع الطبيعة الثابتة لكائنات التعديدة. ويجدر العلم إلى أن الأقواس اختيارية لمجموعة التعديدات في سياقات لا لبس فيها.[٥٣] - تتميز بايثون بتفريغ تسلسل حيث يرتبط تعبيرات متعددة، كل منها يتم تقيم إلى أي شيء يمكن تعيينه إلى (متغير، خاصية قابلة للكتابة، إلخ.)، بطريقة مماثلة لتلك التي تشكل حرفيات التعديدات، وبشكل عام، يتم وضعها على الجانب الأيسر من علامة المساواة في عبارة المساواة. تتوقع العبارة وجود كائن قابل للتكرار على الجانب الأيمن من علامة المساواة ينتج نفس عدد القيم التي تحتوي عليها التعبيرات القابلة للكتابة عند تكرارها من خلاله، وسوف تتكرر من خلاله، مع تعيين كل من القيم المنتجة للتعبير المقابلة على اليسار.[٥٤]
- بايثون لديها عامل
%«لتنسيق سلسلة نصية». هذه الوظيفة مشابهة للتنسيق الخاص بالسلسلة النصيةprintfفي لغة سي، على سبيل المثال؛"spam=%s eggs=%d" % ("blah", 2)تقيّم ك"spam=blah eggs=2". في بايثون 3 و2.6+ استكمل هذا بواسطة طريقةformat()الخاصة ب الصنفstrعلى سبيل المثال"spam={0} eggs={1}".format("blah", 2). بايثون 3.6 أضافت"f-strings" التالي:blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'.[٥٥] - بايثون لديها حرفيات السلاسل النصية متنوعة:
- سلاسل محددة بعلامات اقتباس مفردة أو مزدوجة. على عكس شل يونكس، وبيرل واللغات المتأثرة ب ب حيث تعمل علامات الاقتباس المفردة وعلامات الاقتباس المزدوجة بشكل متماثل وظيفياً. يستخدم كلا النوعين من الخط المائل (
\) رمزًا للهروب. أصبح استكمال السلسلة النصية متاحًا في بايثون 3.6 كـ «سلسلة منسقة حرفياً». - سلاسل نصية بعلامات اقتباس ثلاثية، التي تبدأ وتنتهي بسلسلة من ثلاث علامات اقتباس مفردة أو مزدوجة. قد تمتد على عدة أسطر وتعمل مثل توثيقات هير الموجود في شيل وبيرل وروبي.
- تشكيلة السلسلة النصية الخام، يُشار إليها بادئة السلسلة الحرفية بحرف
r. لا يفسر تسلسل الهروب. ومن ثم تكون السلاسل النصية الأولية مفيدة عندما تكون الخطوط المائلة العكسية الحرفية شائعة، مثل التعبيرات النمطية والمسارات بنمط ويندوز. بالمقارنة مع «اقتباس-@» (@-quoting) في سي شارب.
- سلاسل محددة بعلامات اقتباس مفردة أو مزدوجة. على عكس شل يونكس، وبيرل واللغات المتأثرة ب ب حيث تعمل علامات الاقتباس المفردة وعلامات الاقتباس المزدوجة بشكل متماثل وظيفياً. يستخدم كلا النوعين من الخط المائل (
- لدى اقتباس بايثون quotPython تعبيرات فهرس مصفوفة شرائح المصفوفة (array slicing) في القوائم، يُشار إليها على أنها [مفتاح]
a[key], أو [بداية: توقف]a[start:stop]أو [بداية: توقف: خطوة]a[start:stop:step]. الفهارس ذات أساس صفري، والفهارس السلبية تتعلق بالنهاية. تأخذ الشرائح العناصر من فهرس البداية حتى فهرس التوقف، ولكن لا تتضمنه. تسمح معلمة الشريحة الثالثة، المسماة خطوة أو مرحلة، بتخطي العناصر وعكسها. قد تهمل فهارس الشرائح، على سبيل المثال، تُرجعa[:]نسخة من القائمة بالكامل. كل عنصر في الشريحة هو نسخة ضحلة. - في بايثون، يفرض تمييز صارم بين التعبيرات والعبارات، على عكس اللغات مثل ليسب الشائع Common Lisp أو سكيم أو روبي. هذا يؤدي إلى تكرار بعض الوظائف. فمثلا:
- اشتمال قائمة مقابل حلقة لأجل
for-loops. - العبارات الشرطية مقابل كتل إذا
ifالبرمجية. - ال
()evalمقابل()execدوال المرفقة (في ب ايثون 2،execهي عبارة برمجية) الأول للتعبيرات، والثاني للعبارات البرمجية.
- اشتمال قائمة مقابل حلقة لأجل
لا يمكن أن تكون العبارات جزءًا من تعبير، ل ذلك لا يمكن أن تحتوي القائمة وغيرها من الاشتمالات أو تعبيرات لامبدا (تعتبر كلها تعبيرات) على عبارات. وتبقى هناك حالة استثنائية تتمثل في أن عبارة المساواة (التعيين) مثل a = 1 لا يمكن أن تكون جزءًا من التعبير الشرطي لعبارة شرطية. وهذا يفيد في تجنب خطأ لغة سي الكلاسيكي عن غلطة في عامل التعيين = لعامل المساواة == في الشروط: إذا كان (c = 1) {...} : {... }if (c = 1) صالحًا من الناحية النحوية (ولكن غالبا هو غير مقصود) كشيفرة (كود) لغة سي بالمقابل ...:if c = 1 يسبب خطأً نحوياً في بايثون.
الطرق
الطرق المطبقة على الكائنات هي دوال مرتبطة بصنف الكائن. نحوياً تمثيل. طريقة (قيمة)instance.method(argument). للطرق العادية والتجميل اللغوي للدوال من أجل صنف. طريقة (مثيل، قيمة)Class.method(instance, argument). طرق بايثون لديها معلمة صريحة تسمى ذات self للوصول لبيانات المثيل، على النقيض من الذات الضمنية self (أو هذه this) في بعض لغات البرمجة الأخرى (مثل سي++ أو جافا أو سي-الكائنية أو روبي).[٥٦]

التنويع
تستخدم بايثون تنويع البط ولديها نوع للكائنات ولكن ليس لديها نوع لأسماء المتغيرات. لا يتحقق من قيود النوع في وقت التجميع؛ بدلاً من ذلك، قد تفشل العمليات على كائن ما، مما يدل على أن الكائن المحدد ليس من النوع المناسب. على الرغم من تنويعها بشكل ديناميكي، بايثون منوعة بقوة، مما يمنع العمليات غير المعرّفة جيدًا (على سبيل المثال، إضافة رقم إلى سلسلة نصية) بدلاً من محاولة فهمها بشكل صامت.
تسمح بايثون للمبرمجين بتحديد أنواعهم الخاصة باستخدام الأصناف، والتي غالبًا ما تستخدم في البرمجة الكائنية. تنشأ مثيلات جديدة الأصناف عن طريق استدعاء الصنف (على سبيل المثال، ()SpamClass أو()EggsClass)، الأصناف هي مثيلات من نوع صنف علوي (نفسها مثيل لنفسها)، مما يسمح بالبرمجة الوصفية والانعكاس.
قبل الإصدار 3.0، كان لدى بايثون نوعين من الأصناف: الطراز القديم والأسلوب الجديد.[٥٧] النحو لكلا الأسلوبين هو نفسه، والفرق هو ما إذا كان كائن object الصنف موروثًا، بشكل مباشر أو غير مباشر (جميع الأصناف من النمط الجديد ترث من الكائن object وهي مثيلات من النوع type). في إصدارات بايثون 2 من بايثون 2.2 وما بعده، يمكن استخدام كلا النوعين من الأصناف. أزل المطورون أصناف الطراز القديم في بايثون 3.0.
الخطة طويلة المدى هي دعم التنويع التدريجي[٥٨] بدءاً من بايثون 3.5، تسمح اللغة نحوياً بتحديد أنواع ثابتة ولكن لا يتم التحقق منها في التنفيذ الافتراضي، سي بايثون. يدعم المدقق التجريبي للنوع الثابت والمسمى mypy التحقق من النوع في وقت التجميع.[٥٩]
| نوع | قابلية التغيير | وصف | مثال نحوي |
|---|---|---|---|
bool
|
غير قابل للتغيير | قيمة بوليانية | قالب:كود قالب:كود |
bytearray
|
قابل للتغيير | سلسلة من البايتات | قالب:كود قالب:كود قالب:كود |
bytes
|
غير قابل للتغيير | سلسلة من البايتات | قالب:كود قالب:كود قالب:كود |
complex
|
غير قابل للتغيير | عدد معقد مكون من قسم للأعداد الحقيقية وقسم للأعداد الخيالية | قالب:كود |
dict
|
قابل للتغيير | مصفوفة (أو قاموس) ترابطية لأزواج المفتاح والقيمة ؛ من الممكن أن تحتوي على أنواع مختلطة (مفاتيح وقيم)، يجب أن تكون المفاتيح من النوع القابل للتجزئة (hashable). | قالب:كود قالب:كود |
ellipsisقالب:مر
|
غير قابل للتغيير | عامل قالب:Ill-WD2 القطع ناقص تستخدم كفهرس في مصفوفات نمباي. | قالب:كود قالب:كود |
float
|
غير قابل للتغيير | النقطة العائمة مزدوج الدقة. تعتمد الدقة على الآلة ولكن في الممارسة تنفذ بشكل عام كرقم 64-بت معيار أي إي إي إي 754، بـ53 بت من الدقة.[٦٠] | |
frozenset
|
غير قابل للتغيير | مجموعة set غير مرتبة، لا تحتوي على تكرارات؛ يمكن أن تحتوي على أنواع مختلطة، إذا كانت قابلة للحمل (hashable) | قالب:كود |
int
|
غير قابل للتغيير | عدد صحيح غير محدود الحجم[٦١] | قالب:كود |
list
|
قابل للتغيير | قائمة، يمكن أن يحتوي أنواع مختلطة | قالب:كود قالب:كود |
NoneTypeقالب:مر
|
غير قابل للتغيير | كائن يمثل عدم وجود قيمة، يطلق عليها غالبًا الصفر (Null بلغات أخرى) | قالب:كود |
NotImplementedTypeقالب:مر
|
غير قابل للتغيير | حامل مكان يمكن إرجاعه من عوامل التحميل الزائد للإشارة إلى أنواع المعالجات غير المعتمدة. | قالب:كود |
range
|
غير قابل للتغيير | سلسلة من الأرقام شائعة الاستخدام للتكرار الحلقي عدداً معيناً في الحلقات [٦٢] | قالب:كود قالب:كود |
set
|
قابل للتغيير | مجموعة غير مرتبة، لا تحتوي على نسخ مزدوجة، يمكن أن تحتوي على أنواع مختلطة، إذا كانت قابلة للحمل (hashable) | قالب:كود قالب:كود |
str
|
غير قابل للتغيير | حرف سلسة نصية: سلسلة من نقاط لشيفرة خاصة بيونيكود | قالب:كود قالب:كود """Spanning
multiple
lines"""
|
tuple
|
غير قابل للتغيير | يمكن أن يحتوي عناصر مختلطة | قالب:كود قالب:كود قالب:كود |
رياضيات
يُستخدم في بايثون الرموز المعتادة للمعاملات الحسابية (+، -، *، /)، عامل التقسيم المكمل لأسفل (دالة الجزء الصحيح) // وعامل التقسيم مع باقي % (حيث يمكن أن يكون الباقي سالبًا، على سبيل المثال 4% -3 ==-2). واللغة لديها أيضًا العامل ** للرفع الأسي، على سبيل المثال 3**5 == 125 و0.5**9 == 3.0، وعامل ضرب المصفوفة @.[٦٣] تعمل هذه المعاملات الحسابية كما هو الحال في الرياضيات التقليدية؛ باستخدام نفس قواعد ترتيب العمليات الحسابية، يمكن أن يكون العامل ترميزاً ضمنياً (أيضاً يمكن أن يكون الرمزان + و- أحاديين لتمثيل الأرقام الموجبة والسالبة على التوالي).[ِ ٦] ينتج عن القسمة بين الأعداد نتائج ذات فاصلة عائمة. تغيّر سلوك القسمة في بايثون تغيرًا ملحوظًا بمرور الوقت:[٦٤]
- في بايثون 2.1 والإصدارات السابقة، استُخدم للقسمة سلوكاً شبيهاً بالقسمة في سي. العامل
/هو عامل قسمة عدد صحيح إذا كان كلا المعاملين عددين صحيحين وخلاف ذلك قسمة بفاصلة عائمة. التقسيم للأعداد الصحيحة يقرّب نحو 0، على سبيل المثال7/3 == 2و7/3- == 2-. - في بايثون 2.2 تغير أسلوب القسمة مرة أخرى إلى التقريب نحو اللانهاية السلبية، على سبيل المثال
7/3 == 2و7/3- == 3-. أدخل عامل تقسيم المكمل لأسفل//. لذا3//7== 2,3 //7-== 3-,3// 7.5== 2.0و3//7.5- == 3.0-. تؤدي إضافةfrom __future__ import divisionإلى أن يستخدم النموذج (module) قواعد بايثون 3.0 للقسمة (انظر أدناه). - في بايثون 3.0 تغير أسلوب القسمة لتصبح قسمة فاصلة عائمة دائمًا؛ على سبيل المثال
5/2 == 2.5.
في مصطلحات بايثون، / هي القسمة الحقيقية (أو ببساطة القسمة)، و// القسمة المكملة لأسفل. ولكن، قبل الإصدار 3.0 كان العامل / يمثل القسمة الكلاسيكية (أي الأقليدية).[٦٤]
التقريب نحو اللانهاية السلبية تضيف الاتساق، على الرغم من اختلافها عن معظم اللغات. على سبيل المثال، المعادلة صحيحة دائمًا. والمعادلة b*(a//b) + a%b == a صالحة لكل من القيم الموجبة والسالبة لـ a. بالمقابل، فإن الحفاظ على صحة هذه المعادلة يعني أنه في حين أن نتيجة a%b هي في المجال نصف المفتوح ، حيث أن b هو عدد صحيح موجب، يجب أن تقع في المجال عندما تكون b سالبة.[٦٥]
يوفر بايثون دالة round لتقريب العدد ذو الفاصلة العائمة إلى أقرب عدد صحيح. لفك التعقيد، يستخدم بايثون 3 التقريب لعدد زوجي: round(1.5) round(2.5) ناتج كليهما هو 2.[٦٦] أما الإصدارات السابقة فتستخدم تقريبًا بعيدًا عن الصفر: round(0.5) هو 1.0، round(-0.5) هو 1.0−.[٦٧]
تسمح بايثون بالتعبيرات البوليانية بعلاقات المساواة المتعددة بطريقة تتوافق مع الاستخدام العام في الرياضيات. على سبيل المثال: التعبير a < b < c، يتحقق بايثون ما إذا كانت a أصغر من b وb أصغر من c.[٦٨] بعكس اللغات المشتقة من سي التي تفسر هذا التعبير بشكل مختلف: في سي، يقوم التعبير أولاً بتقييم a < b، مما يؤدي إلى 0 أو 1، ثم تتم مقارنة هذه النتيجة مع c.[٦٩][ِ ٧]
تستخدم بايثون حساب تدريج الدقة الاعتباطية لجميع العمليات الصحيحة. يوفر الصنف (أو النوع) Decimal في نموذج decimal أعداد عشرية بفاصلة عائمة وبدقة اعتباطية محددة مسبقاً والعديد من وسائل التقريب.[٧٠] ويوفر صنف Fraction في نموذج fractions الدقة الاعتباطية للأعداد الكسرية.[٧١]
نظرًا لسعة مكتبة بايثون للرياضيات، ومكتبة الطرف الثالث نمباي التي توسع القدرات المحلية بشكل أكبر، استخدمت بايثون بشكل متكرر كلغة نصية علمية للمساعدة في حل عدة مسائل مثل معالجة البيانات العددية والتلاعب.[٧٢][٧٣]
الترميز
ابتداءً من بايثون 2.1، لاستخدام أحرف غير الأسكي في نص البرنامج، يجب عليك تحديد ترميز شفرة المصدر بشكل صريح في بداية الوحدة، على سبيل المثال:
# -*- coding: utf-8 -*-
# أو
# coding: utf-8
ولكن حتى لو اكتفيت بكتابة:
# coding: utf
«سيفهم» بايثون ما تقصد.[٧٤]
الوراثة
تدعم بايثون الوراثة المتعددة. ابتداءً من النسخة 2.3 تدعم بايثون خوارزمية سي 3، المقتبسة من لغة البرمجة ديلان[٧٥] لحل مشكل ترتيب حل الطريقة. بينما استعملت خوازمية البحث المتعمق الذي يطرح مشاكل في حالة الوراثة الألماسية.[٧٦][ِ ٨]
أمثلة
طباعة «مرحباً يا عالم!»
- مثال طباعة مرحباً يا عالم «مرحباً يا عالم»[ِ ٩]
# كود الطباعة في بايثون لإخراج عبارة
print("مرحباً يا عالم")
حساب العمر
مثال لحساب العمر:
from datetime import * #استدعاء الكل* من مكتبة الوقت والتاريخ
dob = int(input("أدخل تاريخ الميلاد: ")) #يُطلب من المستخدم إدخال تاريخ ميلاده
# العمل على المعطيات
today = datetime.today()
year = today.year
age = int(year) - int(dob)
# طباعة عمر المستخدم
print ("{age}:عمرك هو")
استخراج العدد العاملي
مثال لاستخراج العدد العاملي:
# جرب هذا الكود في بايثون 3.4.3
def Factorial(num):
new_num = 1
for count in range(num,1,-1):
new_num *= count # ضرب النتيجة بالمحسوب
return new_num
limit = 9
for n in range(0,limit+1):
print(n, '! = ' ,Factorial(n),sep='')
# بعد إدخال الكود ستحصل على:
#
# 0! = 1
# 1! = 1
# 2! = 2
# 3! = 6
# 4! = 24
# 5! = 120
# 6! = 720
# 7! = 5040
# 8! = 40320
# 9! = 362880
تكرار طباعة كلمة 5 مرات
مثال لتكرار طباعه كلمة 5 مرات:
n = input(':الرجاء ادخال كلمة')
print str(n) * 5
ملاحظة لبايثون 2 استعمل raw_input.
خوارزمية الترتيب السريع
كمثال غير بديهي يمكن اعتبار خوارزمية الترتيب السريع كمثال مختصر كالتالي:
def quicksort(list):
if len(list) <= 1:
return list
pivotelement = list.pop()
left = [element for element in list if element < pivotelement]
right = [element for element in list if element >= pivotelement]
return quicksort(left) + [pivotelement] + quicksort(right)
على وجه الخصوص، هنا، يتيح تدوين القائمة للمتغيرات على اليسار واليمين تمثيلًا مضغوطًا. للمقارنة، صياغة تكرارية لهذين الخطين:
...
left, right = [], [] # انشاء قوائم فارغة لليمين واليسار
pivotelement = list.pop() # أخر عنصر في القائمة تاخذه كعنوان مرجعي
for element in list: # تكرار على العناصر المتبقية في القائمة...
if element < pivotelement: #و مقارنة العنصر المحوري Pivot-Element
left.append(element) # إذا كان اصغر،علق القائمة اليسرى
else:
right.append(element) # عدا ذلك، إذا لم يمكن اصغر، علّق القائمة اليمنى
...
هذا مجرد مثال واحد على الأعمال الكتابية التي تم توفيرها من خلال تدوين القائمة. في الواقع، في هذه الحالة تكون الصياغة التكرارية أسرع، لأنها تكرر مرة واحدة فقط في حقل «القائمة» وليس مرتين كما هو الحال في تدوين القائمة.
واجهات المستخدم الرسومية
في بايثون يمكن إنشاء واجهة مستخدم رسومية (GUI) بسرعة مع تكينتر (كما هو الحال في لغة بيرل وتي سي إل). يوجد أيضًا مجموعة متنوعة من المغلفات الأخرى التي خدمات أخرى. كما بايثون توفر ارتباطات (bindings) لمجموعات أدوات واجهة المستخدم الرسومية مثل بي.قالب:اختصار مخفي وقالب:اختصار مخفي وقالب:اختصار مخفي وباي أوبج سي ومجموعة أدوات الضوء السريع (فاست لايت). بالإضافة إلى تيكينتر، تحتوي بايثون أيضًا على وحدة للرسم: رسوميات «السلحفاة» (Turtle graphics).[٧٧]
مثال لوحدة تيكينتر
import tkinter as tk
window = tk.Tk()
window.geometry("200x100")
label = tk.Label(window, text="مرحباً يا عالم")
label.pack()
def commandW():
window.destroy()
button = tk.Button(window, text="OK", command=commandW)
button.pack()
window.mainloop()

مثال لرسوميات «السلحفاة»
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

رسوميات أخرى لل«سحلفاة»
-
دائرة ملونة
-
نجمة
-
مربع
المكتبات

يعتبر الكثيرون مكتبة بايثون القياسية الكبيرة واحدة من أعظم نقاط قوة بايثون،[٧٨] نظرا لتوفيرها أدوات تناسب العديد من المهام. كما تدعم المكتبة العديد من التنسيقات والبروتوكولات القياسية مثل امتداد البريد الإلكتروني متعدد الأغراض (MIME) وبروتوكول نقل النص الفائق (HTTP) الخاصة بتطوير تطبيقات الويب، وتدعم أيضا وحدات لإنشاء واجهات المستخدم الرسومية، والاتصال بقواعد البيانات العلائقية، وتوليد أرقام شبه عشوائية، والحساب العشري بدقة اعتباطية [٧٩] والمعالجة بالتعبيرات النمطية، وكذا اختبار الوحدة.[ِ ٤]
بعض أجزاء المكتبة القياسية تشمل الكثير من المميزات (على سبيل المثال، تنفيذ واجهة بوابة خادم ويب (WSGI)
wsgiref يتبع PEP 333[٨٠])، ولكن أغلب الوحدات لا تحتوي على مميزات، وتتميز عن الوحدات الأخرى من خلال التعليمات البرمجية والتوثيق الداخلي وتراكيب الاختبار. بالمقابل، فإن عددًا قليلاً فقط من الوحدات يحتاج إلى تعديل أو إعادة كتابة لعمليات التنفيذ المختلفة، نظرًا لأن معظم المكتبة القياسية هي كود بايثون متعدد المنصات.
تضمّ مكتبة بايثون مجموعة من الوحدات القياسية وبعضها مدمج مع مفسّر بايثون وتتيح الوصول إلى عمليات ليست جزءًا من اللغة، ولكن الهدف منها هو إتاحة الوصول إلى العمليات الأساسية في نظام التشغيل مثل استدعاءات النظام أو زيادة كفاءة عمل المفسّر، يمكن زيادة عدد الوحدات في المكتبة القياسية بوحدات مكتوبة في سي أو بايثون.
ابتداءً من نوفمبر 2019، يحتوي مؤشر حزمة بايثون باي باي قالب:إنج (PyPI)، وهو المستودع الرسمي لبرامج بايثون التابعة لجهات خارجية، على أكثر من 200,000[٨١] حزمة مع مجموعة واسعة من الميزات، بما في ذلك: قالب:بداية-عمو قالب:عمو-4
التطوير

يستعين المطورون لتطوير بايثون بشكل كبير بعملية اقتراح تحسين بايثون (PEP)، وهي الآلية الأساسية لاقتراح ميزات جديدة رئيسية، واستطلاع آراء المجتمع حول القضايا وقرارات تصميم بايثون.[٨٤] كما يغطي نمط ترميز بايثون في PEP 8.[٨٥] ويقوم مجتمع بايثون والمجلس التوجيهي بمراجعة الاقتراحات والتعليق عليها.[٨٤]
يتوافق تعزيز وتحسين اللغة مع تطوير التنفيذ المرجعي سي بايثون. القائمة البريدية بايثون ديف (python-dev) هي المنتدى الأساسي لتطوير اللغة. وتُناقش حالات محددة في نظام تتبع للعلل قالب:وإو المستضاف في bugs.python.org .[٨٦] في الأصل، جرى تطوير شيفرة بايثون البرمجية في مستودع ذاتية الاستضافة بتشغيل ميركوريال، حتى يناير 2017، حيث انتقل بايثون إلى غيت هاب.[٨٧]
هناك ثلاثة أنواع للإصدارات العامة الجديدة لسي بايثون، ويتميز كل نوع بزيادة جزء من رقم الإصدار:
- إصدارات غير متوافقة مع الإصدارات السابقة، حيث يُتوقع كسر الكود مما يجبر المستخدم أن يُحمّل يدويًا. يزيد تعداد الجزء الأول من رقم الإصدار. تحدث هذه الإصدارات بشكل غير دوري، فعلى سبيل المثال، أُصدر الإصدار 3.0 بعد 8 سنوات من 2.0.
- الإصدارات الرئيسية أو «المميزة» ، تصدر كل 18 شهرًا تقريبًا، متوافقة إلى حد كبير ولكنها تقدم ميزات جديدة. يزيد تعداد الجزء الثاني من رقم الإصدار. كل نسخة رئيسية مدعومة بإصلاحات أخطاء لعدة سنوات بعد إصدارها.[٨٨]

- تُنشر إصدارات Bugfix،[٨٩] التي لا تقدم ميزات جديدة، كل 3 أشهر تقريبًا وعند إصلاح عدد كاف من الأخطاء في المصدر منذ الإصدار الأخير. كما تُصحح الثغرات الأمنية في هذه الإصدارات. يزيد تعداد الجزء الثالث والأخير من رقم الإصدار.
أُعلن عن بايثون 3.9 ألفا1 في نوفمبر 2019[٩٠] ومع اعتماد مقياس جديد يتمثل في إصدار سنوي،[٩١] ثم أعلن الإصدار الأول من 3.9 سيصدر في نوفمبر 2020.[٩٢]
تُصدر أيضًا العديد من النسخ بصيغة ألفا وبيتا والنسخ المرشحة كمعاينات واختبارات قبل الإصدارات النهائية. على الرغم من وجود جدول تقريبي لكل إصدار، إلا أنه غالبًا ما يتأخر في الصدور إذا لم يكن الكود جاهزًا. يراقب فريق تطوير بايثون حالة الكود من خلال تشغيل مجموعة اختبارات للوحدة الكبيرة أثناء التطوير، واستخدام نظام BuildBot للتركيب المتواصل.[٩٣]
المؤتمر الأكاديمي الرئيسي حول بايثون هو باي كون. هناك أيضًا برامج توجيه خاصة للبايثون، مثل باي ليديز.
بيئات التطوير
أغلب بيئات تطوير بايثون (بما في ذلك سي بايثون) تتضمن حلقة القراءة - التقييم - الطباعة (REPL) مما يسمح لها بالعمل كمترجم سطر الأوامر حيث يقوم المستخدم بإدخال البيانات بشكل تسلسلي ويتلقى النتائج على الفور.
تضيف القشور (Shells) الأخرى، بما في ذلك بيئة التطوير المتكاملة للتعلم وآي بايثون، قدرات إضافية مثل الإكمال التلقائي المحسّن والاحتفاظ بحالة الجلسة وتعليم الصيغة. بالإضافة إلى بيئات التطوير المتكاملة القياسية لسطح المكتب، هناك بيئات تطوير متكاملة مستندة إلى متصفحات ويب؛ سايج مات (مخصص لتطوير برمجيات بايثون العلمية والرياضية)؛ بايثون إني وير، بيئة تطوير واستضافة تستند إلى متصفح ويب؛ وبيئة تطوير كانوبي المتكاملة، وهو بيئة تطوير متكاملة تجارية لبايثون ترتكز على الحوسبة العلمية.[٩٤]
التنفيذات
تنفيذ العنوان المرجعي
سي بايثون، التنفيذ المرجعي لبايثون، مكتوب بسي، يلبي معيار سي 89 مع العديد من ميزات سي99 المحددة.[٩٥] يقوم بتجميع برامج بايثون في كود بايت متوسط[٩٦] ينفذ بعد ذلك بواسطة آلتها الافتراضية.[٩٧] يوزع سي بايثون مع مكتبة قياسية كبيرة مكتوبة في مزيج من سي، وبايثون. والمكتبة متاحة للعديد من المنصات، بما في ذلك ويندوز (فيستا والإصدارات الأحدث؛ نظام التشغيل ويندوز اكس بي والإصدارات الأقدم، ولكن بايثون 2.7 غير مدعوم حتى الآن ومعظم الأنظمة الشبيهة بيونيكس الحديثة). في فترة بايثون 1 و2، كانت قابلية المنصة واحدة من أولى أولوياتها،[٩٨] حيث كانت تدعم حتى في إم إس وأو إس/2، ولكن حاليا، انخفض الدعم للعديد من المنصات.
تنفيذات أخرى
باي باي هو تنفيذ سريع، يوفر ترجمة في الوقت المناسب، متوافق مع بايثون 2.7 وبايثون 3.6.[٩٩] وهو أسرع من سي بايثون بالمقابل، فهو لا يدعم العديد من المكتبات المكتوبة بلغة ببايثون.[١٠٠][١٠١]
ستاكليس بايثون، انشقاق معروف لسي بايثون، ينفذ الخيوط الدقيقة دون استعمال رصة ذاكرة سي. مما يسمح بالبرامج المتزامنة بنطاق واسع.[١٠٢]
مايكروبايثون وسيركويت بايثون هي متغيرات لبايثون 3 محسنة للتحكم الدقيق وهذا يشمل ليجو مايندستورمز اي في 3.[١٠٣]
تنفيذات غير مدعومة
طورت برامج تجميع بايثون آنية أخرى، ولكنها الآن غير مدعومة:
- سنة 2009، بدأت جوجل مشروعًا باسم أنلادين سوالو، بهدف تسريع مترجم بايثون خمسة أضعاف باستخدام إل إل في إم، وتحسين قدرته على تعدد الخيوط البرمجية مع آلاف النوى ،[١٠٤] بينما تعاني التنفيذات العادية من قفل المترجم العالمي.
- كان سايكو، مجمّع آنيّ متكامل مع سي بايثون ويحول «بايت كود» إلى كود الآلة في وقت التشغيل. الكود المنبعث مخصص لأنواع معينة من البيانات وهو أسرع من كود بايثون القياسي.
- في عام 2005، أصدرت نوكيا مفسر بايثون للهواتف المحمولة سلسلة 60 المسمى بايثون أس60. يتضمن العديد من النماذج من تنفيذات سي بايثون وبعض النماذج الإضافية للتكامل مع نظام التشغيل سيمبيان. حدث المشروع ليشغل على جميع متغيرات منصات S60، وتتوفر العديد من النماذج مدعومة من طرف ثالث. يدعم نوكيا N900 أيضًا بايثون مع مكتبات أدوات جتك+، مما يتيح كتابة البرامج وتشغيلها على الجهاز المستهدف.[١٠٥]
المحولات البرمجية إلى لغات أخرى
توجد العديد من المحولات البرمجية لبايثون إلى لغات أخرى كائنية عالية المستوى، إما بواسطة بايثون غير مقيد، أو مجموعة فرعية مقيدة من بايثون، أو بواسطة لغة مشابهة لبايثون كلغة مصدر:
- كايثون يترجم شيفرة (كود) مكتوبة ببايثون إلى سي.
- جوجل جرامبي يترجم شيفرة (كود) مكتوبة ببايثون إلى جو.[١٠٦][١٠٧]
- يتبع آيرن بايثون نهجا مشابها لتشغيل برمجيات مكتوبة ببايثون على NET. وقت التنفيذ المشترك.
- يتيح جايثون استخدام مكتبة أصناف جافا لبرمجيات بايثون.
- ماي إتش دي إل يترجم شيفرة (كود) مكتوبة ببايثون إلى في في إتش دي إل.
- نويتكا يترجم شيفرة (كود) مكتوبة ببايثون إلى سي++.[١٠٨]
- نيمبا تستعمل إل إل في إم لترجمة شيفرة (كود) مكتوبة ببايثون إل شيفرة الآلة.
- باي جس يترجم شيفرة (كود) مكتوبة ببايثون إلى جافا سكريبت.
- بايركس (آخر إصدار في 2010) يترجم شيفرة (كود) مكتوبة ببايثون إلى سي.
- شيد سكين (آخر إصدار في 2013) يترجم شيفرة (كود) مكتوبة ببايثون إلى سي++.
- باي تران يترجم شيفرة (كود) مكتوبة ببايثون إلى سي++.[١٠٩][١١٠]
- إربايثون يمكنها أن تترجم لسي، استخدم لبرمجة مترجم باي باي.
الأداء
قُورِن أداء مختلف تنفيذات بايثون على عبء عمل غير عددي (التوافقية) في أورو سي باي 13.[١١١] ثم قيس أداء بايثون مقارنة بلغات البرمجة الأخرى من خلال لعبة معايير لغة الكمبيوتر.[١١٢]
مولدات وثائق واجهة برمجة التطبيقات
تتضمن مولدات واجهة برمجة التطبيقات (API) ما يلي:
بايثون للهواتف الذكية
بايثون ليست مناسبة ومحسنة لتطوير برامج الهواتف المحمولة [ِ ٢] مع ذلك، فإن إصدارات بايثون 2.5 و2.6 متوافقة مع آيفون بعد تفعيل كسر الآي أو إس في الإعدادات وهواتف أندرويد بفضل تطبيق إس إل فور (SL4) أي الذي يوفر إمكانية برمجة بعض الواجهات الرسومية بفضل الدالة "android" ;إمكانية إرسال رسائل قصيرة، تشغيل الكاميرا[٣٢]، وهز الهاتف كما هو مبين أسفله.
droid = android.Android() # عميل مرتبط بخادم محلي لإس إل فور أي
# للتحكم بهاتف آخر بعنوان 192.168.0.5، وإس إل فور أي في منفذ 9887
# يكفي كتابة : android.Android('192.168.0.5', 9887)
droid.vibrate(2.5) # هز الهاتف (محلي أو لا) لمدة 2.5 ثانية
ابتداءً من يونيو 2012، صار من الممكن تشغيل بايثون أيضًا في نظام تشغيل بلاك بيري أوس 10 بواسطة تنفيذ، في سبتمبر 2012 أصدر إصدار مخفف: «بلاكبيري تارت»[١١٥][١١٦] مستند إلى بايثون 3.2.2.
استخدامات
منذ 2003، صنفت بايثون ضمن أكثر لغات البرمجة شعبية في فهرس تيوبي للغات البرمجة الأكثر شعبية، وفي فبراير 2020 صنفت في المرتبة الثالثة (أي بعد جافا وسي).[١١٧] صنفت أيضا كلغة برمجة العام لسنة 2007، 2010 و2018.[١١٨] وحسب استبيان لموقع ستاك أوفرفلو فإن بايثون هي أسرع الغات نموا فقد تمكنت من تخطي العديد من لغات البرمجة.[ِ ١]
توصلت دراسة تجريبية إلى أن لغات البرمجة النصية، مثل بايثون، هي أكثر إنتاجية من اللغات التقليدية، مثل سي وجافا، لحل مشكلات البرمجة مثل التحكم بالسلسلة والبحث في القاموس، وخلصت إلى أن استهلاك الذاكرة غالبًا «أفضل من جافا وليس أسوأ بكثير من سي أو سي++».[١١٩] تستخدم منظمات كبيرة بايثون كويكيبيديا، جوجل،[١٢٠] ياهو!،[١٢١] سيرن،[١٢٢] ناسا،[١٢٣] فيسبوك،[١٢٤] أمازون، إنستغرام،[١٢٥] سبوتيفاي[١٢٦][ِ ١] وأيضا بعض الشركات الصغيرة إندستريال لايت آند ماجيك [١٢٧] وإيتا للبرمجيات.[١٢٨] كما أن شبكة التواصل الاجتماعي ريديت مكتوبة كليا ببايثون.[١٢٩]
يمكن استخدام بايثون كلغة برمجة نصية لتطبيقات الويب، مثال : عبر mod wsgi لخادم ويب أباتشي.[١٣٠] باستعمال واجهة بوابة خادم ويب، تطورت واجهة برمجة التطبيقات القياسية لتسهيل برمجة هذه التطبيقات. تدعم المنصات البرمجية لتطبيقات الويب مثل جانغو، باي لونز، بيراميد، توربو جيرز، ويب-تو-باي، تورنادو، فلاسك، بوتل [ِ ١٠] وزوب المطورين في تصميم وصيانة التطبيقات المعقدة. يمكن استخدام باي جس وآيرن بايثون لتطوير جانب العميل من التطبيقات القائمة على أجاكس. يمكن استخدام إس كيو إل ألشمي كمحدد للبيانات العلائقية. تويستد هو إطار عمل يبرمج التواصل بين أجهزة الحاسوب لذا استعمل في دروب بوكس.
المكتبات البرمجية كنمباي وسي باي ومات بلوت ليب تسمح باستعمال بايثون في الحوسبة العلمية.[١٣١][١٣٢] إضافة إلى بايو بايثون وأستروباي اللتان توفران خدمات متخصصة. سايج مات هي برمجية رياضية بواجهة على شكل مفكرة قابلة للبرمجة ببايثون: تشمل أغلب مجالات الرياضيات، كالجبر، والتركيبات، والتحليل العددي، ونظرية الأعداد والتفاضل والتكامل.[١٣٣] تمكنت بايثون من أن تصير جزءا لا يتجزأ من أغلب البرمجيات كلغة برمجة نصية، وتشمل برمجيات طريقة العناصر المنتهية مثل أباكوس، برمجية للتصميم الحدودي ثلاثي الأبعاد، ومثل فري كاد، حزم رسوم متحركة كثري دي إس ماكس، وبلندر، وسينما فور دي، ولايت وايف، وهوديني، ومايا، ومودو، أوتودسك موسيون بولدير، وسوفت إيماج إكس إس آي، وبرنامج الخدع البصرية نوك، برامج معالجة الصور ثنائي الأبعاد كبرنامج جنو لمعالجة الصور،[١٣٤] وإنكسكايب، سكريبوس، بينت شوب برو،[١٣٥] وبرامج التدوين الموسيقي ككابيلا. ستعمل مصحح جنو بايثون كبرتي برنت لإظهار الهياكل المعقدة كحاويات سي++. تروج إسري لبايثون كأفضل خيار لكتابة سكربتات آركجيس.[١٣٦] كما استعملت في العديد من ألعاب الفيديو [١٣٧][١٣٨] واعتمدت كأول لغة برمجة متوفرة في محرك تطبيقات جوجل، يأتي بعدها جافا وجو.[١٣٩] تستخدم بايثون غالبا في مشاريع الذكاء الصناعي ومشاريع تعليم الآلة بمساعدة كل من المكتبات مثل تنسرفلو، كيراس، باي تورش، ساي كيت ليرن.[١٤٠][١٤١][١٤٢][١٤٣] نظرا لأنها لغة برمجية نصية تدعم البرمجة التركيبية، بنحو بسيط، بأدوات معالجة نصية غنية، غالبًا ما تستخدم بايثون لمعالجة اللغات الطبيعية.[١٤٤]

كما أنها مضمنة في أنظمة التشغيل المختلفة مثل أغلب توزيعات لينكس [١٤٥]، أميغا أو إس 4 (يستعمل بايثون 2.7)، فري بي إس دي (كحزمة)، نت بي إس دي، أوبن بي إس دي (كحزمة) وماك أو إس ويمكن استعمال بايثون على هذه الأنظمة على سطر الأوامر. العديد من إصظارات لينكس تستعمل مثبثي برامج مكتوبون ببايثون : أوبنتو تستعمل أوبكويتي، ريدهات لينكس وفيدورا يستعملان مثبث أناكوندا. أما جنتو لينكس فتستعمل بايثون في نظام إدارة حزمها، بورتاج.
تستخدم بايثون بكثافة في صناعة أمن المعلومات، بما في ذلك التحكم بالاستغلال وتطويره.[١٤٦][١٤٧]
البيانات الضخمة، بسبب قدرة بايثون على التعامل مع البيانات بشكل سلس وتحليلها ووجود العديد من المكتبات المختصة في هذا المجال مثل باندا فتعد بايثون خيار ممتاز للعاملين في هذا المجال.[١٤٨] أغلب برمجيات شوجر لحاسوب محمول لكل طفل XO، المطورة الآن في شوجر لابز، مكتوبة ببايثون.[١٤٩] اعتمدت حواسيب رسبري باي أحادية اللوحة بايثون لغة برمجة رئيسية للمستخدم. ليبر أوفيس مكتوب جزئيا ببايثون، ويعتزم تعويض جافا ببايثون. منذ إصدار الإصدار الرابع في 3 سبتمبر 2017، صار موفر البرمجة النصية لبايثون ميزة أساسية للبرنامج.[١٥٠]
في حواسيب اللوحة الواحدة راسباري باي (مفسر بايثون) يجب في الأصل أن يكون مفسر بذاكرة قراءة فقط بايثون المدمج،[١٥١] حتى اليوم، تعد بايثون واحدة من أكثر اللغات المفضلة لراسباري باي، ويأتي نظام التشغيل القياسي راسبيان مع مكتبة بايثون كبيرة للتحكم في الأجهزة.[ِ ١١][ِ ٢]
تشغيل برنامج مكتوب بلغة بايثون
بما أن لغة بايثون نصية، فإنه يتوجب وجود مفسر للغة لتشغيل البرنامج، وللحصول عليه، يكفي تنزيله من موقع لغة بايثون وذلك حسب نظام التشغيل[١٥٢] يستلزم وجود محرر نصوص لكتابة برنامج بايثون حيث يُحفظ الملف بلاحقة py. بعد ذلك ادخل على سطر الأوامر واكتب:
>> python program.py
بحيث program اسم الملف، وللتعامل مباشرة مع محث لغة بايثون، اكتب في سطر الأوامر :
>> py
أو
>>python
المجتمع
مجتمع بايثون
- من الكلمات المستحدثات المألوفة في مجتمع بايثون كلمة pythonic، والتي لها مجموعة واسعة من المعاني المتعلقة بأسلوب البرنامج. إن القول بأن الشفرة هي pythonic يعني القول أنها تستخدم مصطلحات بايثون بشكل جيد، وأنها طبيعية أو تُظهر طلاقة في اللغة، وأنها تتوافق مع فلسفة بايثون البسيطة والتأكيد على سهولة القراءة. في المقابل، فإن التعليمات البرمجية التي يصعب فهمها أو تقرأ مثل النسخ التقريبي من لغة برمجة أخرى تسمى unpythonic.
- غالبًا ما يُشار إلى مستخدمي بايثون والمعجبين بها، وخاصة أولئك الذين يعتبرون على دراية أو خبرة بها، باسم بايثونيستاس (Pythonistas).[١٥٣][١٥٤]
لغات أثرث ببايثون
ظهرت بايثون في وقت متأخر نسبيًا، وبذلك خضعت لتأثير العديد من لغات البرمجة الأخرى ومنها:
- اي بي سي: نفس مسافة بادئة بايثون، وهياكل بيانات عالية المستوى (خرائط)، (في الواقع صممت بايثون لتصحيح أخطاء برمجة أي بي سي).[٩][١٥٥][١٥٦][ِ ١]
- مودولا 3:[ِ ١] الحزم والوحدات، وكذا
tryوelseوexept[١٥٧] - سي[١٥٨]،سي++: بعض النحو كما قال جايدو فان روسم أنه استعمل بعض النحو المتناسق مع سي لكي لا يكره المبرمجون بايثون.[١٥٧][١٥٥][ِ ١]
- ليسب، سكيم: ميزات البرمجة الوظيفية (
lambda,map,reduce,filterوغيرها) [١٥٩] - جافا: الوحدات النمطية.[١٦٠][١٦١]
- أيكون: المولدات [١٦٢]
- سمول توك: البرمجة الكائنية.[ِ ١]
لغات البرمجة التي تأثرت ببايثون
أثر تصميم وفلسفة بايثون على العديد من لغات البرمجة الأخرى:
- بوو، يستخدم بوو مسافة بادئة (الإزاحة)، بناء جملة ونموذج كائن مشابه لبايثون.[١٦٣]
- كوبرا، تستخدم مسافة البادئة وبناء الجملة مماثل لبايثون، وتشير في وثيقة شكر وتقدير على أن بايثون يعتبر الأول من بين اللغات التي أثرت عليها.[١٦٤]
- كافي سكريبت، لغة برمجة تتقاطع مع جافا سكريبت، تحتوي أيضا على بنية مستوحاة من بايتون.
- إيكما سكريبت/جافا سكريبت، استعارت التكرارات والمولدات من بايثون.[١٦٥]
- جي دي سي سكريبت، لغة برمجة تشبه إلى حد بعيد لغة بايثون، مدمجة في محرك لعبة غو دوت.[١٦٦]
- غو، مصمم من أجل قالب:اقتباس مضمن[١٦٧] وتشارك نفس البنية لتقسيم المصفوفات.
- غروفي، صُممت بدافع الرغبة في جلب فلسفة تصميم البايثون إلى جافا.[١٦٨]
- جوليا، صُممت لتكون «قابلةً للاستخدام للبرمجة العامة مثل بايثون».[١٦٩]
- نيم يستخدم نيم مسافة بادئة (الإزاحة) وبناء جملة مشابه لبايثون [١٧٠]
- روبي، صرح مبتكر روبي، يوكيهيرو ماتسوموتو،: «أردت لغة نصية أقوى من لغة بيرل، وأكثر كائنية التوجه من بايثون. ولهذا السبب قررت تصميم لغتي الخاصة».[١٧١]
- سويفت، لغة برمجة طورتها شركة آبل، لديها بعض النحو المستوحى من بايثون.[١٧٢]
كما قلدت لغات أخرى ممارسات تطوير بايتون. على سبيل المثال، أُستخدمت ممارسة طلب مستند يصف الأساس المنطقي، والقضايا المحيطة بتغيير اللغة (في Python، PEP) في تي سي إل،[١٧٣] إرلانغ،[١٧٤] وسويفت.[١٧٥]
انتقادات
في تعريف الطريقة البرمجية يجب وضع المعلمة ذات (self) التي تتوافق مع مثيل الصنف، المطلوب استدعاء طريقتها، بوضعها صراحة كمعلمة. غالباً يبدو هذا الشكل غير أنيق برمجياً كما أنه ليس برمجة كائنية التوجه.[١٧٦] لكن ذلك ضروري لإتاحة بعض البُنى البرمجية الهامة؛ ويتناسب مع فلسفة بايثون القائلة «الصريح أفضل من المضمن».[١٧٧]
وفي الإصدار 3.0 غالباً ما يُنتقد استدعاء تعريف الطريقة لنسخة الصنف الأساسية التي تصرح بالصنف وتتطلب مثيل.حيث يُرى أنه يتناقض مع مبدأ «لا تكرر نفسك (خطواتك)». بالمقابل، يمنع ذلك إعادة التسميات.في الأخير، حلت نقطة الخلاف في بايثون 3.0.[١٧٨]
كما يُنتقد الافتقار إلى أمان التنويع الثابت في بايثون.[١٧٩]
في الأنظمة ذات المعالجات متعددة الأنوية، وفي في سي بايثون، يوجد ما يسمى قفل المفسر العالمي (Global Interpreter Lock (GIL)) الذي له أداء فعّال لتنفيذات بايثون التي يتطلب استخدامها برمجيات حاسوبية متعددة الخيوط. بيد أن هذا القيد غير موجود في جايثون وآيرن بايثون.وحتى الآن، لا توجد مخططات رسمية تحل محل قفل المفسر العالمي. بدلاً من ذلك، يوصّى باستخدام عمليات متعددة تتواصل مع بعضها البعض بدلاً من تعدد الخيوط الحاسوبية.[١٨٠][١٨١]
في التنفيذات المنتشرة، تكون سرعة التنفيذ أبطأ من سرعة العديد من اللغات المجمّعة وتستنزف الذاكرة أكثر،[ِ ٢][١٨٢] ولكن سرعتها مشابهة لبيرل،[١٨٣] بي اتش بي، [١٨٤] دارت [١٨٥]، وروبي.[١٨٦] ويرجع ذلك غالبا إلى مبدأ بايثون «وضوح الكود له الأسبقية على السرعة».[١٨٧] تنصح بعض المواقع مثل دونالد نث وتوني هورار بعدم التحسين المبكر، لذا ظهرت مشاكل في السرعة لا يمكن حلها عن طريق تحسين كود بايثون، [١٨٨] عوضا من ذلك تستخدم مجمعات (أو محولات) آنية مثل باي باي أو يستعان بدوال حساسة للوقت في اللغات منخفضة المستوى مثل سي أو كايثون.
انظر أيضًا
المراجع
باللغات الأجنبية
باللغة العربية
مصادر
قراءة معمقة
دروس
للمبتدئين
- أمثلة بايثون (بالإنجليزية)
- دورات بايثون 2 و3 (بالألمانية)
- دورات أونلاينمن جامعة أنواترلو (بالألمانية/بالانكليزية/بالفرنسية)
- موقع مدرسة البرمجة العربية (بالعربية)
- موقع هرمش (بالعربية)
للمتقدمين
- برمجة بايثون دوت نت: دروس بايثون لتحليل البيانات والذكاء الصنعي والواجهات الرسومية (بالإنكليزية)
- باي داتا: دروس بايثون لتعلم الألة وتحليل البيانات (بالانكليزية)
- بايثون الرائعة: قوائم متنوعة من المصادر تحتوي على مكتبات ودروس حسب الموضوع (بالانكليزية)
- أكاديمية حسوب (عربية)
للأطفال
- ثعبان رانجلنج للأطفال - تعلم البرمجة مع بايثون من قبل من قبل جيسون ر. بريجز للأطفال من عمر الثامنة، رخصة ابداعية (الإنكليزية)
- الثعبان المشاكس -تعلم البرمجة للأطفال، للأطفال من عمر الثامنة، رخصة ابداعية (ألمانية)
وصلات خارجية
قالب:لغات برمجة قالب:برمجيات حرة قالب:بايثون قالب:أطر عمل الويب الخاصة ببايثون قالب:شريط سفلي حوسبة تفاضلية قالب:ضبط استنادي قالب:شريط بوابات
خطأ استشهاد: وسوم <ref> موجودة لمجموعة اسمها "ِ"، ولكن لم يتم العثور على وسم <references group="ِ"/>
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-7 - ↑ ٢٫٠ ٢٫١ ٢٫٢ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةvenners-interview-pt-1 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAbout - ↑ ٤٫٠ ٤٫١ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةtutorial-chapter1 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-26 - ↑ قالب:استشهاد بكتاب
- ↑ قالب:استشهاد بكتاب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-12 - ↑ ٩٫٠ ٩٫١ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةfaq-created - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةtimeline-of-python - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةlj-bdfl-resignation - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بخبر
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةnewin-2.0 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماة3.0-release - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةpep-3000 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ ٢٢٫٠ ٢٢٫١ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-13 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-14 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-15 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-16 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-17 - ↑ ٢٧٫٠ ٢٧٫١ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-59 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-18 - ↑ ٢٩٫٠ ٢٩٫١ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةPEP20 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-19 - ↑ https://gdevelop-app.com/ قالب:Webarchive
- ↑ ٣٢٫٠ ٣٢٫١ Google Code Archive - Long-term storage for Google Code Project Hosting قالب:Webarchive
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-20 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-24 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-52 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-53 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةguttag - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-55 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-56 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-57 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-58 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-60 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-61 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةclassy - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةpep0237 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ ٦٤٫٠ ٦٤٫١ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةpep0238 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-62 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-64 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-63 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-65 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةCPL - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ PEP 8 - Style Guide for Python Code | Python.org قالب:Webarchive
- ↑ قالب:استشهاد بكتاب
- ↑ The Python 2.3 Method Resolution Order قالب:Webarchive
- ↑ Pmw - Python megawidgets قالب:Webarchive
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-86 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-88 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-89 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ ٨٤٫٠ ٨٤٫١ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةPepCite000 - ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-21 - ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةrelease-schedule - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-22 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-23 - ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-66 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-67 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-68 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-69 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-70 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-71 - ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-73 - ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-74 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بمنشورات مؤتمر
- ↑ قالب:استشهاد بويب
- ↑ pydoc قالب:Webarchive
- ↑ Overview — Sphinx 4.0.0+ documentation قالب:Webarchive
- ↑ blackberry-py على بيت باكيت قالب:Webarchive
- ↑ BlackBerry-Tart Preview قالب:Webarchive
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-34 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-28 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةquotes-about-python - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-29 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-30 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-31 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-32 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-33 - ↑ قالب:استشهاد
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-35 - ↑ قالب:استشهاد بدورية محكمة
- ↑ قالب:استشهاد بدورية محكمة
- ↑ قالب:استشهاد
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-38 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-39 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-40 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-41 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-42 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-47 - ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-49 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-50 - ↑ pandas - Python Data Analysis Library قالب:Webarchive
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-51 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ نزل المفسر حسب النظام الذي تعمل عليه قالب:Webarchive
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-27 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-25 - ↑ ١٥٥٫٠ ١٥٥٫١ Foreword for «Programming Python» (1st ed.) قالب:Webarchive
- ↑ The Making of Python قالب:Webarchive
- ↑ ١٥٧٫٠ ١٥٧٫١ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةclassmix - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-1 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-6 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-5 - ↑ Результаты одной из попыток сравнения قالب:Webarchive
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-4 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-90 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-91 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-93 - ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-94 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-95 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةlinuxdevcenter - ↑ قالب:استشهاد بويب
- ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-99 - ↑ خطأ استشهاد: وسم
<ref>غير صحيح؛ لا نص تم توفيره للمراجع المسماةAutoNT-100 - ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ Guido van Rossum: Why explicit self has to stay قالب:Webarchive
- ↑ قالب:استشهاد بويب
- ↑ Rainer Fischbach: Wie Python arbeitet – Beschränkung aufs Wesentliche, heise.de, November 1999, abgerufen am 3. März 2017 قالب:Webarchive
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- ↑ قالب:استشهاد بويب
- بايثون (لغة برمجة)
- اختراعات هولندية
- برمجيات حرة متعددة المنصات
- برمجيات متعددة المنصات
- تقنية المعلومات في هولندا
- علم الحاسوب في هولندا
- لغات البرمجة التعليمية
- لغات برمجة
- لغات برمجة أنشئت في 1991
- لغات برمجة ديناميكية النمط
- لغات برمجة عالية المستوى
- لغات برمجة كائنية التوجه
- لغات برمجة متزامنة
- لغات برمجة نصية
- لغات برمجة وظيفية
- صفحات بأخطاء في المراجع