أنا اكتشفت مؤخرا بديلا لبناء معيار من " expression_on_true إذا المسند آخر expression_on_false "، وأنا لم أر في الدلائل:(expression_on_false, expression_on_true)[predicate]

كيف تعمل
- بين قوسين ، يتم الإعلان عن مجموعة مكونة من عنصرين.
- في الأقواس المربعة ، يتم حساب القيمة الأصلية.
- يتم الوصول إلى مجموعة في المؤشر 1 (إذا كانت قيمة المسند صحيحة) أو 0 (إذا كانت قيمة المسند خاطئة)
لنلقي نظرة على مثال
لنفترض أن لدينا ل ، ونحن بحاجة إلى طباعة "ايجابية" إذا كان الرقم لا يقل عن الصفر، أو "الفعل Nagative" إذا كان الرقم أقل من الصفر.
>>> a = 101
>>> ("negative", "positive")[a >= 0]
'positive'
>>> a = -42
>>> ("negative", "positive")[a >= 0]
'negative'
>>> a = 0
>>> ("negative", "positive")[a >= 0]
'positive'
في الحالة الأولى ، 101> = 0 ، لذا فإن المسند يرجع True. عند الفهرسة ، يتحول True إلى 1 ، لذلك تنتقل المكالمة إلى العنصر باستخدام الفهرس 1. في الحالة الثانية ، نفس الشيء: المسند خطأ ، تنتقل المكالمة إلى العنصر باستخدام الفهرس 0.البناء ("سلبي" ، "إيجابي") [a> = 0] على الأقل وليس أقصر بكثير من "إيجابي" إذا كان>> 0 آخر "إيجابي" ، ولكن ما زلت أجد هذه الميزة مثيرة للاهتمامملحوظة
(بفضل Dasdy )إذا بدلاً من الثوابت ، استبدلنا التعبيرات في المجموعة ، والتي يجب تنفيذ واحد منها فقط ، فإن هذا البناء يفقد معناه.