Python සතුව ත්රිත්ව ක්රියාකරුවන් (කොන්දේසි සහිත ක්රියාකරුවන්) ලෙස හැඳින්වෙන ලේඛන විලාසයක් ඇත, එයට if ප්රකාශයක් වැනි ක්රියාවලියක් තනි පේළියකින් විස්තර කළ හැකිය.
නියැදි කේතය සමඟ පහත විස්තර මෙහි විස්තර කෙරේ.
- ත්රිත්ව ක්රියාකරුවන්ගේ මූලික ලිවීම
if ... elif ... else ...
මෙය එක පේළියකින් විස්තර කරන්න- ලැයිස්තු විස්තීර්ණ අංකනය සහ ත්රිත්ව ක්රියාකරුවන් ඒකාබද්ධ කිරීම
- නිර්නාමික ශ්රිත (ලැම්ඩා ප්රකාශන) සහ ත්රිත්ව ක්රියාකරුවන්ගේ සංයෝජනය
සාමාන්ය if ප්රකාශය පිළිබඳ වැඩි විස්තර සඳහා පහත ලිපිය බලන්න.
ත්රිත්ව ක්රියාකරුවන්ගේ මූලික ලිවීම
Python හි ත්රිත්ව ක්රියාකරු පහත පරිදි ලිවිය හැක
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
ත්රිත්ව ක්රියාකරුට සම්බන්ධ නොවූවත්, ඉහත උදාහරණය lambda ප්රකාශනයට නමක් ලබා දෙන බව සලකන්න. එබැවින්, පයිතන්ගේ කේතීකරණ සම්මුතිය PEP8 වැනි ස්වයංක්රීය පිරික්සුම් මෙවලම් අනතුරු ඇඟවීමක් ජනනය කළ හැක.
මෙයට හේතුව PEP8 විසින් ශ්රිත සඳහා නම් ලබා දීමේදී def භාවිතා කිරීම නිර්දේශ කරන බැවිනි.
PEP8 සංකල්පය පහත පරිදි වේ
- ලැම්ඩා ප්රකාශන භාවිතා කරන්නේ ඇමතීමට හැකි වස්තු තර්ක ලෙස යැවීමට ය, උදාහරණයක් ලෙස, ඒවා නම් නොකර
- lambda ප්රකාශන වල, නම අනුව අර්ථ දැක්වීමට def භාවිතා කරන්න