كيفية الإصلاح: syntaxerror: الوسيطة الموضعية تتبع وسيطة الكلمة الأساسية
الخطأ الذي قد تواجهه في بايثون هو:
SyntaxError : positional argument follows keyword argument
يحدث هذا الخطأ عند استخدام وسيطة موضعية في دالة بعد استخدام وسيطة الكلمة الأساسية .
وهنا الفرق بين الاثنين:
الحجج الموضعية هي تلك التي ليس لديها “كلمة رئيسية” أمامها.
- مثال: my_function(2, 2)
وسيطات الكلمات الرئيسية هي تلك التي تحتوي على “كلمة رئيسية” أمامها.
- مثال: my_function(a=2, b=2)
إذا استخدمت وسيطة موضعية بعد وسيطة الكلمة الرئيسية، فسوف ترمي بايثون خطأً.
- مثال: my_function(a=2, 2)
يوضح المثال التالي كيف يمكن أن يحدث هذا الخطأ في الممارسة العملية.
مثال: تتبع الوسيطة الموضعية وسيطة الكلمة الرئيسية
لنفترض أن لدينا الدالة التالية في لغة بايثون والتي تقوم بضرب قيمتين ثم القسمة على الثلث:
def do_stuff (a,b):
return a*b/c
توضح الأمثلة التالية الطرق الصالحة وغير الصالحة لاستخدام هذه الوظيفة:
الطريقة الصحيحة رقم 1: جميع الوسائط الموضعية
يوضح التعليمة البرمجية التالية كيفية استخدام وظيفتنا مع جميع الوسائط الموضعية:
do_stuff ( 4,10,5 )
8.0
لا يتم إنشاء أي أخطاء لأن Python تعرف بالضبط القيم التي يجب استخدامها لكل وسيطة دالة.
الطريقة الصالحة رقم 2: كافة وسيطات الكلمات الرئيسية
يوضح التعليمة البرمجية التالية كيفية استخدام وظيفتنا مع جميع وسيطات الكلمات الرئيسية:
do_stuff(a= 4 , b= 10 , c= 5 )
8.0
مرة أخرى، لا يتم طرح أي أخطاء لأن بايثون تعرف بالضبط القيم التي يجب استخدامها لكل وسيطة دالة.
الطريقة الصالحة رقم 3: الوسائط الموضعية قبل وسيطات الكلمات الرئيسية
يوضح التعليمة البرمجية التالية كيفية استخدام وظيفتنا مع الوسائط الموضعية المستخدمة قبل وسائط الكلمات الرئيسية:
do_stuff( 4 ,b= 10 ,c= 5 )
8.0
لم يتم إنشاء أي خطأ لأن Python تعلم أنه يجب تعيين القيمة 4 للوسيطة .
طريقة غير صالحة: الوسائط الموضعية بعد وسيطات الكلمات الرئيسية
يوضح التعليمة البرمجية التالية كيف يمكننا محاولة استخدام الوظيفة مع الوسائط الموضعية المستخدمة بعد وسيطات الكلمة الأساسية:
do_stuff(a= 4 , 10 , 5 )
SyntaxError : positional argument follows keyword argument
تم طرح خطأ لأننا استخدمنا الوسائط الموضعية بعد وسائط الكلمات الرئيسية.
على وجه التحديد، لا تعرف بايثون ما إذا كان يجب تعيين القيمتين 10 و 5 للوسيطتين b أو c ، لذلك فهي غير قادرة على تنفيذ الوظيفة.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية إصلاح KeyError في الباندا
كيفية الإصلاح: خطأ القيمة: غير قادر على تحويل float NaN إلى int
كيفية الإصلاح: خطأ في القيمة: لا يمكن بث المعاملات بالأشكال