از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
عملگر شرطی سه تایی پایتون
مزیت داشتن یک عملگر شرطی سه تایی این است که اجازه می دهد تا دستورات if/else کوتاه تری ارائه شود، که می تواند به راحتی در سایر بلوک های کد به صورت خطی گنجانده شود. پایتون هیچ تفاوتی با سایر زبان های برنامه نویسی ندارد زیرا دارای یک عملگر شرطی سه تایی است.
نحو به شرح زیر است:
>>> (expression1) if (condition) else (expression2)
همانطور که می بینید، این دستور if/else را به یک خط کوتاه می کند که معمولاً 4 خط بود:
if (condition):
(expression1)
else
(expression2)
برای مثال ملموس تر، مثال زیر را در نظر بگیرید:
عملگر سه تایی را می توان در بسیاری از موارد استفاده کرد، مانند اجرای شرطی یک عبارت، یا حتی تخصیص یک متغیر بر اساس روی یک شرط
from datetime import datetime
halloween = datetime(2022, 10, 31)
today = datetime.today()
print('Happy Halloween!') if today.date() == halloween.date() else print('Nothing to celebrate...')
اختصاص یک متغیر بر اساس روی شرط یک مورد استفاده رایج برای عملگر سه تایی است.
from datetime import datetime
new_years = datetime(1402, 1, 1)
today = datetime.today()
message = 'Happy New Year!' if today.date() == new_years.date() else 'Nothing to celebrate...'
در حالی که اینها نمونه های بسیار ساده ای هستند، اپراتور سه تایی می تواند یک ویژگی بسیار قدرتمند باشد.
یکی از مواردی که باید مراقب آن باشید ترتیب عملیات در بیان شما است. از آنجایی که عملگر سه تایی اجازه می دهد تا عبارات شما باشند روی همان خط به عنوان شرایط، می تواند به برخی از نتایج غیر منتظره منجر شود.
مثلا:
>>> a = 1
>>> b = 4
>>> c = 10 + a if a > 5 else b
با نگاه کردن به این کد، ممکن است انتظار داشته باشید که نتیجه حاصل شود 14
، اما در واقع برمی گردد 4
. اولین عبارت با هم گروه بندی شده است، بنابراین پایتون آن را به صورت می بیند 10 + a
، به جای فقط a
همانطور که ممکن است انتظار داشته باشید. به همین دلیل، نتیجه این است 4
. اگر می خواهید اپراتور سه تایی فقط برگردد 4
و سپس آن را به آن اضافه کنید 10
برای گروه بندی عبارت از پرانتز استفاده کنید:
>>> a = 1
>>> b = 4
>>> c = 10 + (a if a > 5 else b)
>>> c
14
متاسفانه اونجا هستند برخی از محدودیتها با این نحو، زیرا صرفاً یک عبارت if/else یک خطی نیست. از چند عبارت با استفاده از آن پشتیبانی نمی کند elif
کلمه کلیدی. اگر شما نیاز به ارزیابی چند عبارت دارید، باید یک عملگر سه تایی دیگر را لانه کنید.
>>> a = 1
>>> b = 4
>>> c = 10 + (a if a > 5 else (b if b > 5 else 11))
>>> c
21
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-04 07:50:05