الفرق بين المراجعتين لصفحة: «Python/interpreter»
لا ملخص تعديل |
لا ملخص تعديل |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:مفسر بايثون}}</noinclude> | <noinclude>{{DISPLAYTITLE:مفسر بايثون}}</noinclude> | ||
== تشغيل المفسر == | == تشغيل المفسر == | ||
عادة ما يُنصَّب مفسِّر بايثون في المسار <code>/usr/local/bin/python3.6</code> | عادة ما يُنصَّب مفسِّر بايثون في المسار <code>/usr/local/bin/python3.6</code> في أنظمة يونكس، ويؤدّي وضع هذا المسار ضمن مسار البحث الخاصّ بصدفة يونكس (Unix shell) إلى إمكانية استدعاء مفسّر بايثون عن طريق كتابة الأمر التالي في الصدفة:<syntaxhighlight lang="shell"> | ||
python3.6 | python3.6 | ||
</syntaxhighlight>'''ملاحظة:''' | </syntaxhighlight>'''ملاحظة:''' | ||
سطر 11: | سطر 11: | ||
عادة ما يجري تنصيب بايثون في أنظمة ويندوز في المسار <code>C:\Python36</code> ولكن يمكن تغييره أثناء عملية التنصيب. ولإضافة هذا المجلد إلى مسار النظام، يمكن كتابة الأمر التالي في سطر الأوامر:<syntaxhighlight lang="powershell"> | عادة ما يجري تنصيب بايثون في أنظمة ويندوز في المسار <code>C:\Python36</code> ولكن يمكن تغييره أثناء عملية التنصيب. ولإضافة هذا المجلد إلى مسار النظام، يمكن كتابة الأمر التالي في سطر الأوامر:<syntaxhighlight lang="powershell"> | ||
set path=%path%;C:\python36 | set path=%path%;C:\python36 | ||
</syntaxhighlight>للخروج من المفسّر يمكن كتابة محرف نهاية الملف (end-of-file character) وذلك عن طريق الضغط على المفاتيح | </syntaxhighlight>للخروج من المفسّر يمكن كتابة محرف نهاية الملف (end-of-file character) وذلك عن طريق الضغط على المفاتيح <code>Ctrl-D</code> في أنظمة يونكس أو <code>Ctrl-Z</code> في نظام ويندوز. وإن لم تنجح هذه الطريقة فيمكن الخروج من المفسّر بكتابة الأمر <code>quit()</code>. | ||
يمتلك مفسّر بايثون بعض الخصائص التحريرية مثل التحرير التفاعلي، | يمتلك مفسّر بايثون بعض الخصائص التحريرية مثل التحرير التفاعلي، والبحث في التاريخ واستخدامه (history substitution) واستكمال الشيفرة في الأنظمة التي تدعم مكتبة readline. أسرع طريقة للتحقّق من توفّر خاصية التحرير في سطر الأوامر هي بالضغط على المفتاحين Ctrl+P في أول سطر من المفسر، فإن أصدر جهازك صوتًا فهذا يعني أنّ خاصية التحرير في سطر الأوامر مفعّلة (في بعض الأنظمة قد لا يصدر صوتًا، وهذا يعتمد على الضبط الافتراضي لنظام التشغيل). | ||
أما إن لم يحدث شيء عند الضغط على <code>Ctrl+P</code> أو ظهر الرمز <code>^P</code> فهذا يعني أنّ خاصية التحرير في سطر الأوامر ليست متاحة، ولن يكون بوسعك حينئذٍ إلا أن تستخدم مفتاح backspace لحذف الحروف من السطر الحالي. | |||
يشبه المفسِّر في عمله صدفة يونكس (Unix shell)، فعند استدعائه مع مدخلات اعتيادية فإنّه يقرأ الأوامر وينفّذها بصورة تفاعلية، وعند استدعائه مع اسم ملف كمعامل أو مع ملف كمدخل اعتيادي، فإنّه يقرأ الشيفرة الموجودة في ذلك الملف وينفّذها من فوره. | يشبه المفسِّر في عمله صدفة يونكس (Unix shell)، فعند استدعائه مع مدخلات اعتيادية فإنّه يقرأ الأوامر وينفّذها بصورة تفاعلية، وعند استدعائه مع اسم ملف كمعامل أو مع ملف كمدخل اعتيادي، فإنّه يقرأ الشيفرة الموجودة في ذلك الملف وينفّذها من فوره. | ||
سطر 19: | سطر 21: | ||
هناك طريقة أخرى لتشغيل المفسِّر وهي بكتابة الأمر:<syntaxhighlight lang="shell"> | هناك طريقة أخرى لتشغيل المفسِّر وهي بكتابة الأمر:<syntaxhighlight lang="shell"> | ||
python -c command [arg] ... | python -c command [arg] ... | ||
</syntaxhighlight>والذي ينفّذ العبارة/العبارات في <code>command</code> بصورة مشابهة للخيار <code>-c</code> في صدفة يونكس. ولمّا كانت عبارات بايثون تتضمن في الغالب مسافات بيضاء وحروفًا | </syntaxhighlight>والذي ينفّذ العبارة/العبارات في <code>command</code> بصورة مشابهة للخيار <code>-c</code> في صدفة يونكس مثل Bash. ولمّا كانت عبارات بايثون تتضمن في الغالب مسافات بيضاء وحروفًا تعدّها الصدفة محارف خاصّة، فينصح عادة بإحاطة العبارات بعلامات اقتباس مفردة. | ||
تكون بعض وحدات بايثون مفيدة كما هو الحال مع الشيفرات، ويمكن تنفيذ هذه الوحدات باستخدام الأمر:<syntaxhighlight lang="shell"> | تكون بعض وحدات بايثون مفيدة كما هو الحال مع الشيفرات، ويمكن تنفيذ هذه الوحدات باستخدام الأمر:<syntaxhighlight lang="shell"> | ||
سطر 30: | سطر 32: | ||
يحوّل المفسِّر اسم الشيفرة والمعاملات الإضافية -بعد التعرف عليها- إلى قائمة من السلاسل النصية ويسندها إلى المتغير <code>argv</code> ضمن الوحدة <code>sys</code>. يمكن الوصول إلى هذه القائمة عن طريق تنفيذ الشيفرة:<syntaxhighlight lang="python3"> | يحوّل المفسِّر اسم الشيفرة والمعاملات الإضافية -بعد التعرف عليها- إلى قائمة من السلاسل النصية ويسندها إلى المتغير <code>argv</code> ضمن الوحدة <code>sys</code>. يمكن الوصول إلى هذه القائمة عن طريق تنفيذ الشيفرة:<syntaxhighlight lang="python3"> | ||
import sys | import sys | ||
</syntaxhighlight>تضمّ هذه القائمة عنصرًا واحدًا على الأقل، وذلك عند غياب الشيفرة والمعاملات، ويكون <code>sys.argv[0]</code> سلسلةً نصّية فارغة. عندما يكون اسم الشيفرة الممرّرة هو <code>'-'</code> (أي | </syntaxhighlight>تضمّ هذه القائمة عنصرًا واحدًا على الأقل، وذلك عند غياب الشيفرة والمعاملات، ويكون <code>sys.argv[0]</code> سلسلةً نصّية فارغة. عندما يكون اسم الشيفرة الممرّرة هو <code>'-'</code> (أي أنَّ الشيفرة ستأتي من مجرى الدخل القياسي [standard input]) فسيأخذ العنصر <code>sys.argv[0]</code> القيمة <code>'-'</code>. وعند استخدام <code>-c command</code> فيأخذ العنصر القيمة <code>'-c'</code> وعند استخدام <code>-m module</code> يأخذ العنصر <code>sys.argv[0]</code> الاسم الكامل للوحدة المستخدمة. | ||
لا يتعامل مفسّر بايثون مع الوسائط الأخرى التي تأتي بعد <code>-c command</code> أو <code>-m module</code> ولكنّها تترك في المتغير <code>sys.argv</code> لتُعالج بواسطة | لا يتعامل مفسّر بايثون مع الوسائط الأخرى التي تأتي بعد <code>-c command</code> أو <code>-m module</code> ولكنّها تترك في المتغير <code>sys.argv</code> لتُعالج بواسطة شيفرة بايثون التي نكتبها. | ||
== الوضع التفاعلي Interactive mode == | == الوضع التفاعلي Interactive mode == | ||
يكون مفسّر بايثون في الوضع التفاعلي عندما يقرأ الأوامر من الطرفية، وفي هذا الوضع يطلب المفسِّر الأمر التالي باستخدام المحث (prompt) الرئيسي والذي يكون عادة ثلاث علامات | يكون مفسّر بايثون في الوضع التفاعلي عندما يقرأ الأوامر من الطرفية، وفي هذا الوضع يطلب المفسِّر الأمر التالي باستخدام المحث (prompt) الرئيسي والذي يكون عادة ثلاث علامات «أكبر من» متتالية (<code><<<</code>)، ويستخدم المفسِّر المحث الثانوي للأسطر المتمّمة للشيفرة وهو عبارة عن ثلاث نقاط (<code>...</code>). | ||
يطبع المفسّر عند الولوج إليه رسالة ترحيبية قبل طباعة المحثّ الأول، وتتضمن هذه الرسالة رقم الإصدار ومعلومات حقوق الملكية، وكما هو موضّح في المثال التالي:<syntaxhighlight lang="shell"> | يطبع المفسّر عند الولوج إليه رسالة ترحيبية قبل طباعة المحثّ الأول، وتتضمن هذه الرسالة رقم الإصدار ومعلومات حقوق الملكية، وكما هو موضّح في المثال التالي:<syntaxhighlight lang="shell"> | ||
سطر 42: | سطر 44: | ||
[GCC 4.8.2] on linux | [GCC 4.8.2] on linux | ||
Type "help", "copyright", "credits" or "license" for more information. | Type "help", "copyright", "credits" or "license" for more information. | ||
>>> | |||
</syntaxhighlight>يمكن استخدام الخيار للولوج إلى الوضع التفاعلي في مفسّر بايثون دون عرض الرسالة الترحيبية:<syntaxhighlight lang="shell"> | |||
$ python3.6 -q | |||
>>> | >>> | ||
</syntaxhighlight>تستخدم الأسطر المتمّمة عند إدخال بنى تتكوّن من أسطر متعددة، مثل عبارة <code>[[Python/if|if]]</code> التالية:<syntaxhighlight lang="python3"> | </syntaxhighlight>تستخدم الأسطر المتمّمة عند إدخال بنى تتكوّن من أسطر متعددة، مثل عبارة <code>[[Python/if|if]]</code> التالية:<syntaxhighlight lang="python3"> | ||
سطر 54: | سطر 59: | ||
=== ترميز الشيفرة المصدرية === | === ترميز الشيفرة المصدرية === | ||
تُعامل الملفات المصدرية في بايثون على أنّها مرمّزة بالترميز <code>UTF-8</code>، وبهذا يمكن استخدام الحروف التابعة لمعظم اللغات العالمية في الوقت نفسه ضمن السلاسل النصية والمعرّفات | تُعامل الملفات المصدرية في بايثون على أنّها مرمّزة بالترميز <code>UTF-8</code>، وبهذا يمكن استخدام الحروف التابعة لمعظم اللغات العالمية في الوقت نفسه ضمن [[Python/str|السلاسل النصية]] [[Python/Basic Syntax#.D8.A7.D9.84.D9.85.D8.B9.D8.B1.D9.91.D9.81.D8.A7.D8.AA .D9.88.D8.A7.D9.84.D9.83.D9.84.D9.85.D8.A7.D8.AA .D8.A7.D9.84.D9.85.D9.81.D8.AA.D8.A7.D8.AD.D9.8A.D8.A9|والمعرّفات]] [[Python/Basic Syntax#.D8.A7.D9.84.D8.AA.D8.B9.D9.84.D9.8A.D9.82.D8.A7.D8.AA Comments|والتعليقات]]، ولكن المكتبة القياسية تستخدم الترميز ASCII للمعرفات، وهو أمر متّفق عليه في الشيفرات المحمولة (portable). ولعرض جميع المحارف بصورة صحيحة يجب أن يتعرّف محرر النصوص على ترميز الملف ويجب استخدام خطّ يدعم جميع المحارف الموجودة في الملف. | ||
يمكن تغيير الترميز الافتراضي للملف وذلك من خلال التصريح عن الترميز المطلوب على هيئة تعليق خاص يوضع في بداية الملف، ويكون بالصيغة التالية:<syntaxhighlight lang="python"> | يمكن تغيير الترميز الافتراضي للملف وذلك من خلال التصريح عن الترميز المطلوب على هيئة تعليق خاص يوضع في بداية الملف، ويكون بالصيغة التالية:<syntaxhighlight lang="python"> | ||
سطر 62: | سطر 67: | ||
على سبيل المثال، في حال الرغبة باستخدام الترميز <code>Windows-1252</code>، يجب أن يكون السطر الأول في الشيفرة المصدرية كالآتي:<syntaxhighlight lang="python3"> | على سبيل المثال، في حال الرغبة باستخدام الترميز <code>Windows-1252</code>، يجب أن يكون السطر الأول في الشيفرة المصدرية كالآتي:<syntaxhighlight lang="python3"> | ||
# -*- coding: cp-1252 -*- | # -*- coding: cp-1252 -*- | ||
</syntaxhighlight>يجب التصريح عن الترميز المطلوب في السطر الأول من الملف حصرًا، باستثناء الشيفرات المصدرية التي تبدأ بسطر <code>"shebang"</code> الخاص بأنظمة | </syntaxhighlight>يجب التصريح عن الترميز المطلوب في السطر الأول من الملف حصرًا، باستثناء الشيفرات المصدرية التي تبدأ [[Python/Basic Syntax#.D8.B3.D8.B7.D8.B1 .D8.B4.D9.8A.D8.A8.D8.A7.D9.86.D9.83 shebang line|بسطر <code>"shebang"</code>]] الخاص بأنظمة يونكس. في هذه الحالة يجب أن يكون التصريح عن الترميز المطلوب في السطر الثاني من الملف. فمثلًا:<syntaxhighlight lang="python3"> | ||
#!/usr/bin/env python3 | #!/usr/bin/env python3 | ||
# -*- coding: cp-1252 -*- | # -*- coding: cp-1252 -*- |
المراجعة الحالية بتاريخ 20:39، 16 مايو 2018
تشغيل المفسر
عادة ما يُنصَّب مفسِّر بايثون في المسار /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 -*-
مصادر
- صفحة Using the Python Interpreter في توثيق Python الرسمي.