पायथन में एक लेखन शैली है जिसे टर्नरी ऑपरेटर (सशर्त ऑपरेटर) कहा जाता है जो एक प्रक्रिया का वर्णन कर सकता है जैसे कि एक पंक्ति में एक कथन।
नमूना कोड के साथ निम्नलिखित को यहां समझाया गया है।
- टर्नरी ऑपरेटरों का मूल लेखन
if ... elif ... else ...
इसका वर्णन एक पंक्ति में करें- सूची व्यापक संकेतन और टर्नरी ऑपरेटरों का संयोजन
- अनाम कार्यों (लैम्ब्डा एक्सप्रेशन) और टर्नरी ऑपरेटरों का संयोजन
सामान्य अगर कथन के बारे में अधिक जानकारी के लिए निम्न आलेख देखें।
टर्नरी ऑपरेटरों का मूल लेखन
पायथन में, टर्नरी ऑपरेटर को निम्नानुसार लिखा जा सकता है:
Expression evaluated when the conditional expression is true if conditional expression else Expression evaluated when the conditional expression is false
यदि आप शर्तों के अनुसार मानों को स्विच करना चाहते हैं, तो बस प्रत्येक मान को वैसा ही लिखें जैसा वह है।
Value to return if conditional expression is true if conditional expression else Value to return if conditional expression is false
a = 1
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# odd
a = 2
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# even
यदि आप शर्तों के अनुसार प्रसंस्करण स्विच करना चाहते हैं, तो प्रत्येक अभिव्यक्ति का वर्णन करें।
a = 1
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 3
a = 2
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 4
वे भाव जो कोई मान नहीं लौटाते (ऐसे भाव जो कोई नहीं लौटाते) भी स्वीकार्य हैं। स्थिति के आधार पर, अभिव्यक्तियों में से एक का मूल्यांकन किया जाता है और प्रक्रिया को निष्पादित किया जाता है।
a = 1
print('even') if a % 2 == 0 else print('odd')
# odd
एक सामान्य if स्टेटमेंट के साथ लिखे गए निम्नलिखित कोड के बराबर।
a = 1
if a % 2 == 0:
print('even')
else:
print('odd')
# odd
तार्किक ऑपरेटरों (और, या, आदि) का उपयोग करके एकाधिक सशर्त अभिव्यक्तियों को भी जोड़ा जा सकता है।
a = -2
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# negative and even
a = -1
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# positive or odd
if ... elif ... else ...एक पंक्ति का विवरण
if ... elif ... else ...
इसे एक पंक्ति में लिखने का कोई विशेष तरीका नहीं है। हालांकि, यह अभिव्यक्ति में किसी अन्य टर्नरी ऑपरेटर का उपयोग करके महसूस किया जा सकता है जिसका मूल्यांकन तब किया जाता है जब टर्नरी ऑपरेटर की सशर्त अभिव्यक्ति झूठी होती है। नेस्टिंग टर्नरी ऑपरेटरों की छवि।
हालांकि, इसका व्यापक रूप से उपयोग न करना सबसे अच्छा हो सकता है क्योंकि यह पठनीयता को कम करता है।
a = 2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# positive
a = 0
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# zero
a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative
निम्नलिखित सशर्त अभिव्यक्ति की व्याख्या निम्नलिखित दो तरीकों से की जा सकती है, लेकिन इसे पूर्व (1) के रूप में माना जाता है।
A if condition 1 else B if condition 2 else C
1. A if condition 1 else ( B if condition 2 else C )
2. ( A if condition 1 else B ) if condition 2 else C
एक ठोस उदाहरण इस प्रकार है। पहली अभिव्यक्ति को ऐसा माना जाता है जैसे वह दूसरी हो।
a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative
result = 'negative' if a < 0 else ('positive' if a > 0 else 'zero')
print(result)
# negative
result = ('negative' if a < 0 else 'positive') if a > 0 else 'zero'
print(result)
# zero
सूची व्यापक संकेतन और टर्नरी ऑपरेटरों का संयोजन
टर्नरी ऑपरेटर का एक उपयोगी उपयोग तब होता है जब सूची बोध संकेतन में सूचियों को संसाधित किया जाता है।
टर्नरी ऑपरेटर और लिस्ट कॉम्प्रिहेंशन नोटेशन को मिलाकर, सूची के तत्वों को बदलना संभव है या शर्तों के आधार पर कुछ अन्य प्रोसेसिंग करना संभव है।
l = ['even' if i % 2 == 0 else i for i in range(10)]
print(l)
# ['even', 1, 'even', 3, 'even', 5, 'even', 7, 'even', 9]
l = [i * 10 if i % 2 == 0 else i for i in range(10)]
print(l)
# [0, 1, 20, 3, 40, 5, 60, 7, 80, 9]
सूची बोध संकेतन के बारे में अधिक जानकारी के लिए, निम्न आलेख देखें।
अनाम कार्यों (लैम्ब्डा एक्सप्रेशन) और टर्नरी ऑपरेटरों का संयोजन
टर्नरी ऑपरेटर, जिसे एक अनाम फ़ंक्शन (लैम्ब्डा एक्सप्रेशन) में भी संक्षिप्त रूप से वर्णित किया जा सकता है, उपयोगी है।
get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'
print(get_odd_even(1))
# odd
print(get_odd_even(2))
# even
ध्यान दें कि, हालांकि टर्नरी ऑपरेटर से असंबंधित, उपरोक्त उदाहरण लैम्ब्डा अभिव्यक्ति को एक नाम प्रदान करता है। इसलिए, स्वचालित जाँच उपकरण जैसे कि पायथन का कोडिंग सम्मेलन PEP8 एक चेतावनी उत्पन्न कर सकता है।
ऐसा इसलिए है क्योंकि PEP8 फ़ंक्शन को नाम निर्दिष्ट करते समय def के उपयोग की अनुशंसा करता है।
PEP8 की अवधारणा इस प्रकार है
- लैम्ब्डा अभिव्यक्तियों का उपयोग कॉल करने योग्य वस्तुओं को तर्क के रूप में पारित करने के लिए किया जाता है, उदाहरण के लिए, उनका नाम लिए बिना
- लैम्ब्डा अभिव्यक्तियों में, नाम से परिभाषित करने के लिए def का उपयोग करें