كيفية الإصلاح: 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
كيفية الإصلاح: خطأ في القيمة: لا يمكن بث المعاملات بالأشكال

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *