فهم المهام المتسلسلة في بايثون
المهام المتسلسلة في بايثون، والتي تتمثل في تعبيرات مثل "x = y = somefunction()"، قد أثارت اهتمامًا كبيرًا المناقشات المتعلقة بمعادلتها لمهام متسلسلة متعددة ("x = somefunction(); y = somefunction()"). لتوضيح هذه المسألة، دعونا نستكشف عملية المهام المتسلسلة بالتفصيل.
في المهمة المتسلسلة، يتم تعيين الهدف الموجود في أقصى اليسار أولاً. لذلك، "x = y = somefunction()" يعادل:
temp = somefunction() x = temp y = temp
هذا الترتيب أمر بالغ الأهمية، حيث يتلقى الهدف الموجود على اليسار قيمة المتغير المؤقت "temp" قبل تعيينه للهدف الموجود على اليمين. وهذا واضح في تفكيك دالة الإسناد المتسلسلة:
>>> def chained_assignment(): ... x = y = some_function() ... >>> import dis >>> dis.dis(chained_assignment) 2 0 LOAD_GLOBAL 0 (some_function) 3 CALL_FUNCTION 0 6 DUP_TOP 7 STORE_FAST 0 (x) 10 STORE_FAST 1 (y) 13 LOAD_CONST 0 (None) 16 RETURN_VALUE
لاحظ أن القيمة التي يتم إرجاعها بواسطة الوظيفة يتم تخزينها في "x" أولاً، ثم في "y."
هذا الفهم ضروري لفهم سلوك المهام المتسلسلة. على سبيل المثال، يجب تجنب التعبيرات مثل "x = y = []" لأن كلا من "x" و"y" سيشيران إلى نفس القائمة. بدلاً من ذلك، فضل المهام المنفصلة مثل "x = []" و"y = []" لإنشاء قوائم متميزة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3