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 илэрхийлэлд нэр өгдөг болохыг анхаарна уу. Тиймээс Python-ийн PEP8 кодчилол зэрэг автомат шалгах хэрэгслүүд нь Анхааруулга үүсгэж болзошгүй.
Учир нь PEP8 нь функцүүдэд нэр өгөхдөө def ашиглахыг зөвлөдөг.
PEP8-ийн тухай ойлголт дараах байдалтай байна
- Ламбда илэрхийлэл нь дуудагдах боломжтой объектуудыг аргумент болгон дамжуулахад ашиглагддаг, жишээлбэл, тэдгээрийг нэрлэхгүйгээр
- Ламбда илэрхийлэлд нэрээр нь тодорхойлохдоо def-г ашиглана