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]
សម្រាប់ព័ត៌មានបន្ថែមអំពីបញ្ជីកំណត់ចំណាំ សូមមើលអត្ថបទខាងក្រោម។
- ពាក់ព័ន្ធ៖របៀបប្រើការយល់បញ្ជី Python
ការរួមបញ្ចូលគ្នានៃមុខងារអនាមិក (កន្សោម 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 ដើម្បីកំណត់តាមឈ្មោះ