Python’un üçlü operatörü (koşullu operatör) ile tek satırda if ifadeleri yazma

Python, tek bir satırda if ifadesi gibi bir işlemi tanımlayabilen üçlü operatörler (koşullu operatörler) adı verilen bir yazı stiline sahiptir.

Aşağıda örnek kodla birlikte burada açıklanmıştır.

  • Üçlü operatörlerin temel yazımı
  • if ... elif ... else ...Bunu bir satırda anlat
  • Liste Kapsamlı Gösterimi ve Üçlü Operatörleri Birleştirme
  • Anonim işlevlerin (lambda ifadeleri) ve üçlü operatörlerin birleşimi

Normal if deyimi hakkında daha fazla bilgi için aşağıdaki makaleye bakın.

Üçlü operatörlerin temel yazımı

Python’da üçlü operatör aşağıdaki gibi yazılabilir.

Expression evaluated when the conditional expression is true if conditional expression else Expression evaluated when the conditional expression is false

Değerleri koşullara göre değiştirmek istiyorsanız, her değeri olduğu gibi yazmanız yeterlidir.

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

İşlemeyi koşullara göre değiştirmek istiyorsanız, her bir ifadeyi açıklayın.

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

Değer döndürmeyen ifadeler (Yok döndüren ifadeler) de kabul edilebilir. Koşullara bağlı olarak ifadelerden biri değerlendirilir ve işlem yürütülür.

a = 1
print('even') if a % 2 == 0 else print('odd')
# odd

Normal bir if ifadesi ile yazılmış aşağıdaki koda eşdeğerdir.

a = 1

if a % 2 == 0:
    print('even')
else:
    print('odd')
# odd

Birden çok koşullu ifade, mantıksal işleçler (ve, or, vb.) kullanılarak da birleştirilebilir.

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 ...Tek satırlık açıklama

if ... elif ... else ...Bunu tek bir satıra yazmanın özel bir yolu yoktur. Ancak, üçlü operatörün koşullu ifadesi yanlış olduğunda değerlendirilen ifadede başka bir üçlü operatör kullanılarak gerçekleştirilebilir. Üçlü operatörleri iç içe yerleştirmenin görüntüsü.

Ancak, okunabilirliği azalttığı için yaygın olarak kullanmamak en iyisi olabilir.

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ğıdaki koşullu ifade, aşağıdaki iki şekilde yorumlanabilir, ancak birincisi (1) olarak kabul 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 

Somut bir örnek aşağıdaki gibidir. İlk ifade sanki ikincisiymiş gibi kabul 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

Liste Kapsamlı Gösterimi ve Üçlü Operatörleri Birleştirme

Liste anlama gösteriminde listeleri işlerken üçlü operatörün yararlı bir kullanımıdır.

Üçlü operatör ve liste anlama gösterimini birleştirerek, bir listenin öğelerini değiştirmek veya koşullara bağlı olarak başka işlemler yapmak 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]

Liste anlama gösterimi hakkında daha fazla bilgi için aşağıdaki makaleye bakın.

Anonim işlevlerin (lambda ifadeleri) ve üçlü operatörlerin birleşimi

İsimsiz bir fonksiyonda bile (lambda ifadesi) kısaca tanımlanabilen üçlü operatör yararlı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

Üçlü operatörle ilgisi olmamasına rağmen, yukarıdaki örneğin lambda ifadesine bir ad atadığını unutmayın. Bu nedenle, Python’un kodlama kuralı PEP8 gibi otomatik kontrol araçları bir Uyarı oluşturabilir.

Bunun nedeni, PEP8’in işlevlere ad atarken def kullanılmasını önermesidir.

PEP8 kavramı aşağıdaki gibidir

  • Lambda ifadeleri, çağrılabilir nesneleri, örneğin onları adlandırmadan argüman olarak iletmek için kullanılır.
  • Lambda ifadelerinde, ada göre tanımlamak için def kullanın
Copied title and URL