بايثون / الأساسيات / الدرس 1
تشغيل بايثون وفهم تنفيذ البرنامج
البرنامج سلسلة تعليمات يمكن إعادة تنفيذها. نبدأ بتحديد مفسر مناسب، والتمييز بين الطرفية ولغة بايثون، وتتبع الأسماء والمخرجات قبل الانتقال إلى التراكيب الأكبر.
في هذه الصفحة
أهداف الدرس
- التمييز بين الملف المصدري والمفسر والطرفية والجلسة التفاعلية.
- تتبع الإسناد وإعادة إنتاج المخرجات في عملية جديدة.
من النص إلى التنفيذ
شفرة بايثون نص يقرؤه المفسر. يحفظ الملف ذو الامتداد .py هذا النص، ويؤدي تشغيله إلى إنشاء عملية لها أسماؤها وكائناتها. تنفذ التعليمات عادة بالترتيب، ولذلك تستطيع تعليمة لاحقة استخدام اسم عُيّن سابقا. التعليق الذي يبدأ بالعلامة # يوضح القصد ولا ينفذ. تعني قراءة البرنامج توقع تغير حالته خطوة بخطوة، وليس تخمين النتيجة من سطره الأخير. ابدأ تجربة صغيرة بسؤال محدد عن قيمة اسم بعد الإسناد. يسهل حفظ التجربة في ملف إعادة تشغيلها ومناقشتها أكثر من الاعتماد على تعديلات متفرقة في جلسة تفاعلية.
اختيار المفسر عن قصد
تستخدم الأمثلة القابلة للتشغيل بايثون 3.11 أو أحدث والمكتبة القياسية فقط. يختار الأمر python3 المفسر في كثير من أنظمة يونكس، وقد يتوافر المشغّل py في ويندوز. تختلف أسماء الأوامر بحسب التثبيت، لذا افحص الإصدار أولا. تنفذ الطرفية أوامر تشغيل البرامج، أما محث بايثون فيستقبل تعبيرات وتعليمات بايثون. لا تنسخ رموز المحث إلى الملف. قد يختار المحرر مفسرا مختلفا عن الطرفية؛ قارن إعداداتهما عند اختلاف السلوك، واترك تعديل تثبيت النظام خارج نطاق التجربة الأولى.
الإسناد يربط الأسماء
يحسب الإسناد التعبير الموجود يمينا، ثم يربط الاسم الموجود يسارا بالنتيجة. ليست علامة = مساواة رياضية يجب أن تبقى صحيحة إلى الأبد. يغير الإسناد اللاحق ارتباط الاسم ولا يعيد حساب نتيجة عددية سابقة. تساعد الأسماء الواضحة مثل unit_price على تتبع العمل. تجنب تسمية متغير print أو list حتى لا تحجب الدوال المضمنة. يحسب المثال المجموع ثم يغير الكمية؛ يبقى المجموع كما حُسب وقت تنفيذ الإسناد، ولا يحدث تحديث تلقائي على طريقة جداول البيانات.
unit_price = 7
quantity = 3
total = unit_price * quantity
quantity = 4
print(total)
print(quantity)
21
4
تستخدم عملية الضرب الكمية 3 عند إسناد total. يغير الإسناد الثاني quantity وحده. يكشف استدعاءا print القيمتين، ويمكن بذلك اختبار تسلسل التنفيذ.
التعبيرات والطباعة والفحص المحدد
ينتج التعبير قيمة. قد تعرض الجلسة التفاعلية تمثيلها تلقائيا، بينما يحتاج الملف عادة إلى print لإظهارها. تفصل print الوسائط بمسافات وتنهي السطر ما لم تطلب غير ذلك. المخرجات دليل يمكن مقارنته بالمتوقع. استخدم مدخلات ثابتة أثناء التعلم حتى يعكس الاختلاف خطأ في الفهم، لا اختلاف كتابة المستخدم أو الوقت. يستخدم المثال الثاني الوحدة القياسية sys لفحص الحد الأدنى للإصدار فقط، ويتجنب طباعة مسار المفسر أو تفاصيل تختلف بين الأجهزة.
import sys
name = "Mira"
print("Hello", name)
print("Supported:", sys.version_info >= (3, 11))
Hello Mira
Supported: True
يتيح الاستيراد الوحدة sys عبر اسمها. تعطي المقارنة قيمة منطقية تطبع True عند استخدام أحد الإصدارات المدعومة في المقرر.
دورة تعلم قابلة للتكرار
أنشئ ملفا لسؤال واحد، وتوقع مخرجاته على الورق، ثم شغله وقارن الأسطر حرفيا. إذا اختلفت النتيجة، ابحث عن أول تعليمة يفترق عندها توقعك عن الحالة الفعلية. أعد تشغيل العملية بعد تعديل الملف حتى لا تخفي أسماء متبقية في جلسة تفاعلية إسنادا مفقودا. استخدم أربع مسافات للمسافة البادئة؛ ستصبح مؤثرة عند تعلم الكتل. احفظ النص بترميز UTF-8 حتى تبقى العربية واضحة. يكفي تسجيل المفسر والمدخلات والبرنامج والنتيجة لتمكين شخص آخر من إعادة إنتاج المشكلة دون الوصول إلى محررك.
الأخطاء الشائعة وإصلاحها
ظهور NameError لاسم غير معرّف
- لماذا يحدث؟
- تقرأ التعليمة اسما لم يُربط بقيمة في العملية الحالية.
- كيف تصلحه؟
- أسند القيمة قبل قراءتها وراجع الهجاء وحالة الحروف.
- كيف تتجنب تكراره؟
- شغّل الملف في عملية جديدة بعد كل تعديل مؤثر.
ظهور SyntaxError عند نسخ رموز المحث
- لماذا يحدث؟
- الرموز مثل >>> علامات عرض وليست جزءا من الشفرة.
- كيف تصلحه؟
- انسخ التعليمات وحدها إلى ملف .py.
- كيف تتجنب تكراره؟
- افصل أوامر الطرفية عن شفرة بايثون في ملاحظاتك.
التعبير المحفوظ لا يعرض شيئا
- لماذا يحدث؟
- العرض التلقائي للتعبيرات خاص بالجلسة التفاعلية.
- كيف تصلحه؟
- مرر النتيجة إلى print عندما تحتاج إلى مخرجات مرئية.
- كيف تتجنب تكراره؟
- ميّز بين القيم المحسوبة داخليا والأسطر المعروضة.
اختبر فهمك
1. تتبع x = 4 ثم y = x + 2 ثم x = 9. ماذا تعرض طباعة x وy؟
اعرض الحل المشروح
يربط الإسناد الأول x بالعدد أربعة. يحسب الثاني ستة ويربطها بالاسم y. لا يغير إسناد تسعة إلى x القيمة المحفوظة في y، لذلك تعرض print(x, y) النتيجة 9 6. يبين ذلك أن الإسناد فعل يحدث في لحظة محددة.
2. صمم تقريرا قابلا للتكرار لملف يعمل بطريقة مختلفة في المحرر والطرفية.
اعرض الحل المشروح
سجل إصدار المفسر المختار في كل مكان واسم الملف المحفوظ والشفرة المصغرة الكاملة وطريقة التشغيل والمخرجات الدقيقة. أعد تشغيل العمليتين وشغّل الملف نفسه. إذا اختلف الإصدار، اختر مفسرا مدعوما واحدا قبل البحث في سلوك اللغة.
أهم ما تعلمته
- يربط الإسناد الاسم عند تنفيذ التعليمة.
- تجعل العملية الجديدة والمدخلات الثابتة النتائج قابلة للتكرار.
- ميّز القيمة المحسوبة عن المخرجات المعروضة.