Python bir sətirdə if ifadəsi kimi prosesi təsvir edə bilən üçlü operatorlar (şərti operatorlar) adlı yazı üslubuna malikdir.
Aşağıdakılar nümunə kodla birlikdə burada izah olunur.
- Üçlü operatorların əsas yazısı
if ... elif ... else ...
Bunu bir sətirdə təsvir edin- Siyahı Kompleks Qeyd və Üçlük Operatorların Birləşdirilməsi
- Anonim funksiyaların (lambda ifadələri) və üçlü operatorların birləşməsi
Normal if ifadəsi haqqında ətraflı məlumat üçün aşağıdakı məqaləyə baxın.
Üçlü operatorların əsas yazısı
Python-da üçlü operatoru aşağıdakı kimi yazmaq olar
Expression evaluated when the conditional expression is true if conditional expression else Expression evaluated when the conditional expression is false
Şərtlərə görə dəyərləri dəyişmək istəyirsinizsə, sadəcə olaraq hər bir dəyəri olduğu kimi yazın.
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
Şərtlərə uyğun olaraq emal prosesini dəyişmək istəyirsinizsə, hər bir ifadəni təsvir edin.
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
Dəyər qaytarmayan ifadələr (Heç birisini qaytaran ifadələr) də məqbuldur. Şərtdən asılı olaraq ifadələrdən biri qiymətləndirilir və proses yerinə yetirilir.
a = 1
print('even') if a % 2 == 0 else print('odd')
# odd
Normal if ifadəsi ilə yazılmış aşağıdakı koda ekvivalentdir.
a = 1
if a % 2 == 0:
print('even')
else:
print('odd')
# odd
Çoxsaylı şərti ifadələr də məntiqi operatorlardan (və, və ya və s.) istifadə etməklə birləşdirilə bilər.
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 ...Bir sətirli təsvir
if ... elif ... else ...
Bunu bir sətirdə yazmağın xüsusi bir yolu yoxdur. Bununla belə, üçlü operatorun şərti ifadəsi yanlış olduqda qiymətləndirilən ifadədə başqa üçlü operatordan istifadə etməklə həyata keçirilə bilər. Yuvalanan üçlü operatorların şəkli.
Bununla belə, onu geniş şəkildə istifadə etməmək daha yaxşı olar, çünki o, oxunaqlılığı azaldır.
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
Aşağıdakı şərti ifadə aşağıdakı iki şəkildə şərh edilə bilər, lakin əvvəlki (1) kimi qəbul edilir.
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
Konkret misal aşağıdakı kimidir. Birinci ifadə ikinci ifadə kimi qəbul edilir.
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
Siyahı Kompleks Qeyd və Üçlük Operatorların Birləşdirilməsi
Siyahıların başa düşülməsi qeydində siyahıları emal edərkən üçlü operatorun faydalı istifadəsidir.
Üçlü operatoru və siyahı başa düşmə notasiyasını birləşdirməklə, şərtlərdən asılı olaraq siyahının elementlərini əvəz etmək və ya başqa bir emal etmək mümkündür.
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]
Siyahının başa düşülməsi notasiyası haqqında daha çox məlumat üçün aşağıdakı məqaləyə baxın.
Anonim funksiyaların (lambda ifadələri) və üçlü operatorların birləşməsi
Hətta anonim funksiyada (lambda ifadəsi) qısa şəkildə təsvir edilə bilən üçlü operator faydalıdır.
get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'
print(get_odd_even(1))
# odd
print(get_odd_even(2))
# even
Qeyd edək ki, üçlü operatorla əlaqəsi olmasa da, yuxarıdakı nümunə lambda ifadəsinə ad təyin edir. Buna görə də, Python-un PEP8 kodlaşdırma konvensiyası kimi avtomatik yoxlama vasitələri Xəbərdarlıq yarada bilər.
Bunun səbəbi, PEP8-in funksiyalara adlar təyin edərkən def istifadəsini tövsiyə etməsidir.
PEP8 konsepsiyası aşağıdakı kimidir
- Lambda ifadələri çağırıla bilən obyektləri arqument kimi ötürmək üçün istifadə olunur, məsələn, onlara ad vermədən
- Lambda ifadələrində adla müəyyən etmək üçün def istifadə edin