"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يعطي Python 3 خطأً في بناء الجملة عند استخدام وسيطات Tuple المتداخلة؟

لماذا يعطي Python 3 خطأً في بناء الجملة عند استخدام وسيطات Tuple المتداخلة؟

تم النشر بتاريخ 2024-11-10
تصفح:148

Why Does Python 3 Give a Syntax Error When Using Nested Tuple Arguments?

الوسائط المتداخلة في بايثون 3

عند تشغيل كود بايثون الذي يتضمن وسيطات صف متداخلة كمعلمات دالة، قد يواجه المرء خطأ في بناء الجملة:

ملف "/usr/local/lib/python3.2/dist-packages/simpletriple.py"، السطر 9 إضافة مواطن (self, (sub, pred, obj)): ^ خطأ في بناء الجملة: بناء جملة غير صالح
File "/usr/local/lib/python3.2/dist-packages/simpletriple.py", line 9
    def add(self, (sub, pred, obj)):
                  ^
SyntaxError: invalid syntax

الأسباب

في Python 3، تمت إزالة تفريغ معلمات المجموعة. هذا يعني أن الوظائف لم تعد قادرة على قبول الصفوف كوسيطات وفك ضغطها مباشرة في متغيرات.

الحل: فك الحزمة يدويًا

لحل خطأ بناء الجملة، تحتاج إلى تعديل وظيفة فك المجموعة يدويًا إلى متغيرات فردية. إليك مثال:

def add(self, sub_pred_obj): # Previous syntax: def add(self, (sub, pred, obj))
    sub, pred, obj = sub_pred_obj
    # ... rest of the function
يعمل هذا التعديل على فك مجموعة sub_pred_obj في المتغيرات الفردية sub وpred وobj.

ملاحظة إضافية

إذا كانت الوظيفة إحدى وظائف lambda، فلن يكون التفريغ اليدوي ممكنًا. بدلاً من ذلك، فكر في تمرير الصف كمعلمة واحدة والوصول إلى عناصره عبر الفهرسة:

lambda xy: (xy[1], xy[0]) # بدلاً من: lambda (x, y) : (ص، س)
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3