પાયથોન પાસે ટર્નરી ઓપરેટર્સ (શરતી ઓપરેટર્સ) તરીકે ઓળખાતી લેખન શૈલી છે જે એક લીટીમાં if સ્ટેટમેન્ટ જેવી પ્રક્રિયાનું વર્ણન કરી શકે છે.
સેમ્પલ કોડ સાથે અહીં નીચેનું સમજાવ્યું છે.
- ટર્નરી ઓપરેટરોનું મૂળભૂત લેખન
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 નો ઉપયોગ કરો