اگر پایتون اپراتور سه گانه شرطی نداره، آیا امکان شبیه سازی اون از طریق ساختار های دیگه وجود داره؟
برای این پرسش 4 پاسخ وجود دارد
4بله، این اپراتور در ورژن 2.5 اضافه شد. سینتکس دستور به این صورته:
a if condition else b
در ابتدا condition
ارزیابی می شه و سپس a
یا b
بررسی میشه و بر اساس مقدار Boolean مشخص شده از بررسی condition
بازگشت (return) داده میشه. اگر condition
به صورت True
ارزیابی بشه، در این صورت a
اجرا و بازگشت داده میشه و از اجرای b
صرف نظر میشه و برعکس
مثال :
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
میتونی از این عبارت شرطی برای انتصاب مقدار برای متغیر استفاده کنی:
x = a if True else b
امتیاز6874👍
از روی مستندات:
عبارت های شرطی (بعضی موقع تحت عنوان "اپراتور سه گانه" شناخته می شود) در بین اپراتور های پایتون کمترین اولویت را دارد.
عبارت
x if C else y
در ابتدا شرط را ارزیابی می کند، C (نه x); اگر C درست باشد، x ارزیابی می شود و مقدار آن برگشت داده می شود؛ در غیر این صورت y ارزیابی می شود و مقدارش برگشت داده می شود.برای آگاهی از جزئیات بیشتر عبارت های شرطی PEP 308 رو ببین.
امتیاز155👍
برای نسخه های قبل 2.5، یک ترفند هست:
[expression] and [on_true] or [on_false]
در زمانی که on_true
مقدار بولین false داره، ممکنه نتیجه اشتباه بشه.
البته خوبیش اینه که عبارت ها رو از چپ به راست ارزیابی می کنه که به نظر من واضح تره.
امتیاز334👍
میتونی داخل یک tuple ایندکس کنی:
(falseValue, trueValue)[test]
test
باید True یا False برگردونه.
شاید ایمن تر باشه که همیشه به این صورت پیاده سازی بشه:
(falseValue, trueValue)[test == True]
یا میتونی از تابع bool()
برای اطمینان از این که مقدار برگشتی Boolean هست، استفاده کنی.
(falseValue, trueValue)[bool(<expression>)]
امتیاز777👍
شما اینجا هستید : کاپ کد » پرسش ها » conditional-operator » آیا زبان پایتون عملگر سه گانه شرطی دارد؟