ការសរសេរប្រសិនបើសេចក្តីថ្លែងការណ៍នៅក្នុងបន្ទាត់មួយជាមួយប្រតិបត្តិករ ternary របស់ Python (ប្រតិបត្តិករតាមលក្ខខណ្ឌ)

អាជីវកម្ម

Python មានរចនាប័ទ្មសរសេរហៅថា ternary operators (ប្រតិបត្តិករតាមលក្ខខណ្ឌ) ដែលអាចពណ៌នាអំពីដំណើរការដូចជា if statement ក្នុងបន្ទាត់តែមួយ។

ខាងក្រោមនេះត្រូវបានពន្យល់នៅទីនេះ រួមជាមួយនឹងកូដគំរូ។

  • ការសរសេរជាមូលដ្ឋាននៃប្រតិបត្តិករ ternary
  • if ... elif ... else ...ពិពណ៌នាអំពីរឿងនេះក្នុងមួយជួរ
  • រួមបញ្ចូលគ្នានូវបញ្ជីរាយនាមដ៏ទូលំទូលាយ និងប្រតិបត្តិករ Ternary
  • ការរួមបញ្ចូលគ្នានៃមុខងារអនាមិក (កន្សោម lambda) និងប្រតិបត្តិករ ternary

សូមមើលអត្ថបទខាងក្រោមសម្រាប់ព័ត៌មានបន្ថែមអំពីសេចក្តីថ្លែងការណ៍ if ធម្មតា។

ការសរសេរជាមូលដ្ឋាននៃប្រតិបត្តិករ ternary

នៅក្នុង Python ប្រតិបត្តិករ ternary អាចត្រូវបានសរសេរដូចខាងក្រោម

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 ...មិនមានវិធីពិសេសដើម្បីសរសេរវានៅលើបន្ទាត់តែមួយទេ។ ទោះយ៉ាងណាក៏ដោយ វាអាចត្រូវបានដឹងដោយការប្រើប្រតិបត្តិករ ternary មួយផ្សេងទៀតនៅក្នុងកន្សោមដែលត្រូវបានវាយតម្លៃនៅពេលដែលកន្សោមតាមលក្ខខណ្ឌនៃប្រតិបត្តិករ ternary មិនពិត។ រូបភាពនៃប្រតិបត្តិករ ternary សំបុក។

ទោះជាយ៉ាងណាក៏ដោយ វាអាចជាការល្អបំផុតដែលមិនត្រូវប្រើវាច្រើនព្រោះវាកាត់បន្ថយការអាន។

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

រួមបញ្ចូលគ្នានូវបញ្ជីរាយនាមដ៏ទូលំទូលាយ និងប្រតិបត្តិករ Ternary

ការប្រើប្រាស់ដ៏មានសារៈប្រយោជន៍នៃប្រតិបត្តិករ ternary គឺនៅពេលដំណើរការបញ្ជីក្នុងបញ្ជីកំណត់ចំណាំ។

ដោយការរួមបញ្ចូលប្រតិបត្តិករ ternary និងបញ្ជីកំណត់ចំណាំដែលអាចយល់បាន វាគឺអាចធ្វើទៅបានដើម្បីជំនួសធាតុនៃបញ្ជីមួយ ឬអនុវត្តដំណើរការមួយចំនួនផ្សេងទៀតអាស្រ័យលើលក្ខខណ្ឌ។

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]

សម្រាប់ព័ត៌មានបន្ថែមអំពីបញ្ជីកំណត់ចំណាំ សូមមើលអត្ថបទខាងក្រោម។

ការរួមបញ្ចូលគ្នានៃមុខងារអនាមិក (កន្សោម lambda) និងប្រតិបត្តិករ ternary

ប្រតិបត្តិករ ternary ដែលអាចត្រូវបានពិពណ៌នាដោយសង្ខេបសូម្បីតែនៅក្នុងមុខងារអនាមិក (កន្សោម lambda) គឺមានប្រយោជន៍។

get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'

print(get_odd_even(1))
# odd

print(get_odd_even(2))
# even

ចំណាំថា ទោះបីជាមិនទាក់ទងនឹងប្រតិបត្តិករ ternary ក៏ដោយ ក៏ឧទាហរណ៍ខាងលើផ្តល់ឈ្មោះទៅកន្សោម lambda ។ ដូច្នេះ ឧបករណ៍ពិនិត្យដោយស្វ័យប្រវត្តិ ដូចជាអនុសញ្ញាសរសេរកូដរបស់ Python PEP8 អាចបង្កើតការព្រមាន។

នេះគឺដោយសារតែ PEP8 ណែនាំឱ្យប្រើ def នៅពេលកំណត់ឈ្មោះទៅមុខងារ។

គោលគំនិតនៃ PEP8 មានដូចខាងក្រោម

  • កន្សោម Lambda ត្រូវបានប្រើដើម្បីបញ្ជូនវត្ថុដែលអាចហៅបានជាអាគុយម៉ង់ ឧទាហរណ៍ ដោយមិនដាក់ឈ្មោះពួកវា
  • នៅក្នុងកន្សោម lambda ប្រើ def ដើម្បីកំណត់តាមឈ្មោះ
Copied title and URL