cb
codebamin
الفصل 6 · القوائم (Lists)

المصطلحات: استدعاء الدوال والأساليب (Methods)

حان الوقت لتوسيع مصطلحاتك قليلًا.

كل من print وlen دالة (Function). جرّب بنفسك:

__program_indented__

التعبير مثل len(things) أو print(things) يسمى استدعاء دالة (Function call)؛ فعندما تكتب ذلك فأنت تستدعي الدالة len أو print. وإمكان استدعاء الدالة بهذه الصورة يعني أن الدوال قابلة للاستدعاء (Callable):

__program_indented__

معظم الأشياء في بايثون ليست قابلة للاستدعاء، ولذلك فإن محاولة استدعائها ستؤدي إلى خطأ:

__program_indented__

في الاستدعاء len(things) تُسمى things وسيطًا (Argument). وقد ترى أحيانًا كلمة معامل (Parameter)، وهي قريبة جدًا في المعنى. يمكنك تصور الأمر كأنك تعطي الوسيط للدالة؛ فنقول إن things يُمرر إلى len، وإن len تقبل أو تستقبل هذا الوسيط.

التعبير len(things) سيُقيَّم إلى عدد مثل 3، وعندها نقول إن الدالة len أرجعت (Returned) القيمة 3.

كل استدعاء دالة يجب أن يُرجع شيئًا، حتى لو كان ذلك الشيء يمثل «لا شيء مفيد». وظيفة print مثلًا هي عرض شيء على الشاشة، وليست إرجاع قيمة نافعة. لذلك تُرجع قيمة خاصة غير مفيدة في هذا السياق:

__program_indented__

None قيمة خاصة تمثل غياب قيمة مفيدة فعلية. تُستخدم كثيرًا كقيمة فارغة أو مكان مؤقت. والدوال التي لا تريد إرجاع شيء محدد تُرجع None افتراضيًا.

إذا رأيت رسالة خطأ تتحدث عن None أو NoneType فهذا يعني كثيرًا أنك أسندت إلى متغير قيمة مختلفة عما كنت تقصده. جرّب المثال:

__program_indented__

الأسلوب (Method) هو دالة تنتمي إلى نوع معين، ويمكن استدعاؤها على قيم ذلك النوع باستخدام النقطة .. مثلًا، upper وlower أسلوبان للنصوص، ويمكن استدعاؤهما مثل word.upper():

__program_indented__

مثال آخر: append أسلوب خاص بالقوائم. لكن لا يمكنك استخدام .upper على قائمة، ولا .append على نص:

__program_indented__

كلمة attribute في رسالة الخطأ تشير إلى استخدام النقطة .. والخطأ يحدث أصلًا عند الوصول إلى word.append حتى قبل محاولة استدعائه كدالة.

solution.py
1
2
3
4
5
6
7
8
9
10
الطرفية (shell)
>>>