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
Үштік операторға қатысы болмаса да, жоғарыдағы мысал ламбда өрнегіне атау тағайындайтынын ескеріңіз. Сондықтан Python кодтау конвенциясы PEP8 сияқты автоматты тексеру құралдары Ескертуді тудыруы мүмкін.
Себебі PEP8 функцияларға атауларды тағайындағанда def пайдалануды ұсынады.
PEP8 тұжырымдамасы келесідей
- Ламбда өрнектері шақырылатын нысандарды аргументтер ретінде беру үшін пайдаланылады, мысалы, оларды атаусыз
- Ламбда өрнектерінде атау бойынша анықтау үшін def пайдаланыңыз