مفسر بايثون

من موسوعة حسوب

تشغيل المفسر

عادة ما يُنصَّب مفسِّر بايثون في المسار ‎/usr/local/bin/python3.6 في أنظمة يونكس، ويؤدّي وضع هذا المسار ضمن مسار البحث الخاصّ بصدفة يونكس (Unix shell) إلى إمكانية استدعاء مفسّر بايثون عن طريق كتابة الأمر التالي في الصدفة:

python3.6

ملاحظة:

في أنظمة يونكس، لا يستخدم الاسم python افتراضيًا لاستدعاء مفسّر بايثون في الإصدارات ‎3.x‎ من اللغة، وذلك لتجنّب حدوث أي تضارب مع مفسّر الإصدارات ‎2.x من اللغة.

يمكن تحديد مسار مفسِّر بايثون أثناء عملية التثبيت، وعادة ما يُستخدم المسار التالي: ‎/usr/local/python كمسار بديل.

عادة ما يجري تنصيب بايثون في أنظمة ويندوز في المسار ‎C:\Python36 ولكن يمكن تغييره أثناء عملية التنصيب. ولإضافة هذا المجلد إلى مسار النظام، يمكن كتابة الأمر التالي في سطر الأوامر:

set path=%path%;C:\python36

للخروج من المفسّر يمكن كتابة محرف نهاية الملف (end-of-file character) وذلك عن طريق الضغط على المفاتيح Ctrl-D في أنظمة يونكس أو Ctrl-Z في نظام ويندوز. وإن لم تنجح هذه الطريقة فيمكن الخروج من المفسّر بكتابة الأمر ‎quit()‎.

يمتلك مفسّر بايثون بعض الخصائص التحريرية مثل التحرير التفاعلي، والبحث في التاريخ واستخدامه (history substitution) واستكمال الشيفرة في الأنظمة التي تدعم مكتبة readline. أسرع طريقة للتحقّق من توفّر خاصية التحرير في سطر الأوامر هي بالضغط على المفتاحين Ctrl+P في أول سطر من المفسر، فإن أصدر جهازك صوتًا فهذا يعني أنّ خاصية التحرير في سطر الأوامر مفعّلة (في بعض الأنظمة قد لا يصدر صوتًا، وهذا يعتمد على الضبط الافتراضي لنظام التشغيل).

أما إن لم يحدث شيء عند الضغط على Ctrl+P أو ظهر الرمز ‎^P فهذا يعني أنّ خاصية التحرير في سطر الأوامر ليست متاحة، ولن يكون بوسعك حينئذٍ إلا أن تستخدم مفتاح backspace لحذف الحروف من السطر الحالي.

يشبه المفسِّر في عمله صدفة يونكس (Unix shell)، فعند استدعائه مع مدخلات اعتيادية فإنّه يقرأ الأوامر وينفّذها بصورة تفاعلية، وعند استدعائه مع اسم ملف كمعامل أو مع ملف كمدخل اعتيادي، فإنّه يقرأ الشيفرة الموجودة في ذلك الملف وينفّذها من فوره.

هناك طريقة أخرى لتشغيل المفسِّر وهي بكتابة الأمر:

python -c command [arg] ...

والذي ينفّذ العبارة/العبارات في command بصورة مشابهة للخيار ‎-c في صدفة يونكس مثل Bash. ولمّا كانت عبارات بايثون تتضمن في الغالب مسافات بيضاء وحروفًا تعدّها الصدفة محارف خاصّة، فينصح عادة بإحاطة العبارات بعلامات اقتباس مفردة. تكون بعض وحدات بايثون مفيدة كما هو الحال مع الشيفرات، ويمكن تنفيذ هذه الوحدات باستخدام الأمر:

python -m module [arg] ...

والذي ينفّذ الملف المصدر التابع للوحدة وكأنّه قد استدعي عن طريق كتابة اسمه الكامل في سطر الأوامر.

من المفيد في بعض الأحيان -وخصوصًا عند استخدام ملفات الشيفرة- الولوج إلى الوضع التفاعلي بعد تنفيذ الشيفرة مباشرة، ويمكن القيام بذلك عن طريق إضافة الخيار ‎-i قبل اسم الشيفرة.

تمرير المعاملات

يحوّل المفسِّر اسم الشيفرة والمعاملات الإضافية -بعد التعرف عليها- إلى قائمة من السلاسل النصية ويسندها إلى المتغير argv ضمن الوحدة sys. يمكن الوصول إلى هذه القائمة عن طريق تنفيذ الشيفرة:

import sys

تضمّ هذه القائمة عنصرًا واحدًا على الأقل، وذلك عند غياب الشيفرة والمعاملات، ويكون ‎sys.argv[0]‎ سلسلةً نصّية فارغة. عندما يكون اسم الشيفرة الممرّرة هو '-' (أي أنَّ الشيفرة ستأتي من مجرى الدخل القياسي [standard input]) فسيأخذ العنصر sys.argv[0]‎ القيمة '-'. وعند استخدام ‎-c command فيأخذ العنصر القيمة '‎-c' وعند استخدام ‎-m module يأخذ العنصر sys.argv[0]‎ الاسم الكامل للوحدة المستخدمة.

لا يتعامل مفسّر بايثون مع الوسائط الأخرى التي تأتي بعد ‎-c command أو ‎-m module ولكنّها تترك في المتغير sys.argv لتُعالج بواسطة شيفرة بايثون التي نكتبها.

الوضع التفاعلي Interactive mode

يكون مفسّر بايثون في الوضع التفاعلي عندما يقرأ الأوامر من الطرفية، وفي هذا الوضع يطلب المفسِّر الأمر التالي باستخدام المحث (prompt) الرئيسي والذي يكون عادة ثلاث علامات «أكبر من» متتالية (<<<)، ويستخدم المفسِّر المحث الثانوي للأسطر المتمّمة للشيفرة وهو عبارة عن ثلاث نقاط (...).

يطبع المفسّر عند الولوج إليه رسالة ترحيبية قبل طباعة المحثّ الأول، وتتضمن هذه الرسالة رقم الإصدار ومعلومات حقوق الملكية، وكما هو موضّح في المثال التالي:

$ python3.6
Python 3.6 (default, Sep 16 2015, 09:25:04)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

يمكن استخدام الخيار للولوج إلى الوضع التفاعلي في مفسّر بايثون دون عرض الرسالة الترحيبية:

$ python3.6 -q
>>>

تستخدم الأسطر المتمّمة عند إدخال بنى تتكوّن من أسطر متعددة، مثل عبارة if التالية:

>>> the_world_is_flat = True
>>> if the_world_is_flat:
... print("Be careful not to fall off!")
...
Be careful not to fall off!

للاطلاع على الوضع التفاعلي بصورة أكبر راجع الوضع التفاعلي.

المفسّر وبيئته الخاصة

ترميز الشيفرة المصدرية

تُعامل الملفات المصدرية في بايثون على أنّها مرمّزة بالترميز UTF-8، وبهذا يمكن استخدام الحروف التابعة لمعظم اللغات العالمية في الوقت نفسه ضمن السلاسل النصية والمعرّفات والتعليقات، ولكن المكتبة القياسية تستخدم الترميز ASCII للمعرفات، وهو أمر متّفق عليه في الشيفرات المحمولة (portable). ولعرض جميع المحارف بصورة صحيحة يجب أن يتعرّف محرر النصوص على ترميز الملف ويجب استخدام خطّ يدعم جميع المحارف الموجودة في الملف.

يمكن تغيير الترميز الافتراضي للملف وذلك من خلال التصريح عن الترميز المطلوب على هيئة تعليق خاص يوضع في بداية الملف، ويكون بالصيغة التالية:

# -*- coding: encoding -*-

وتعني encoding هنا الترميزات المدعومة من قبل بايثون. على سبيل المثال، في حال الرغبة باستخدام الترميز Windows-1252، يجب أن يكون السطر الأول في الشيفرة المصدرية كالآتي:

# -*- coding: cp-1252 -*-

يجب التصريح عن الترميز المطلوب في السطر الأول من الملف حصرًا، باستثناء الشيفرات المصدرية التي تبدأ بسطر "shebang" الخاص بأنظمة يونكس. في هذه الحالة يجب أن يكون التصريح عن الترميز المطلوب في السطر الثاني من الملف. فمثلًا:

#!/usr/bin/env python3
# -*- coding: cp-1252 -*-

مصادر