Python xwedan şêwazek nivîsandinê ye ku jê re operatorên sêalî (operatorên şertî) tê gotin ku dikare pêvajoyek mîna daxuyaniya if-ê di yek rêzê de diyar bike.
Ya jêrîn li vir, digel koda nimûneyê, tê rave kirin.
- Nivîsandina bingehîn a operatorên sêalî
if ... elif ... else ...
Vê yekê bi yek rêzê vebêjin- Tevhevkirina Lîsteya Nîşana Berfireh û Operatorên Ternary
- Kombînasyona fonksiyonên nenas (biwêjên lambda) û operatorên sêalî
Ji bo bêtir agahdarî li ser bêjeya normal heke, gotara jêrîn bibînin.
Nivîsandina bingehîn a operatorên sêalî
Di Python de, operatora sêalî dikare wekî jêrîn were nivîsandin
Expression evaluated when the conditional expression is true if conditional expression else Expression evaluated when the conditional expression is false
Heke hûn dixwazin li gorî şertan nirxan biguherînin, bi tenê her nirxê wekî ku ye binivîsin.
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
Ger hûn dixwazin li gorî şert û mercan pêvajoyê biguherînin, her biwêjê rave bikin.
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
Gotinên ku nirxek venagerînin (biwêjên ku vedigerin Tune) jî têne qebûl kirin. Li gorî şert û mercan yek ji îfadeyan tê nirxandin û pêvajo tê meşandin.
a = 1
print('even') if a % 2 == 0 else print('odd')
# odd
Wekheviya koda jêrîn a ku bi daxuyaniyek normal-ê hatî nivîsandin.
a = 1
if a % 2 == 0:
print('even')
else:
print('odd')
# odd
Gelek bêjeyên şertî jî dikarin bi karanîna operatorên mentiqî (û, an, hwd.) ve werin girêdan.
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 ...Danasîna yek-xetê
if ... elif ... else ...
Rêyek taybetî tune ku meriv vê yekê li ser yek rêzek binivîse. Lêbelê, ew dikare bi karanîna operatorek sêyemek din a di îfadeya ku tê nirxandin de dema ku îfadeya şertî ya operatora sêalî xelet be were fêhm kirin. Wêneyê operatorên sêalî yên hêlînê.
Lêbelê, dibe ku çêtirîn be ku hûn wê bi berfirehî bikar neynin ji ber ku ew xwendinê kêm dike.
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
Gotina şertî ya jêrîn dikare bi du awayên jêrîn were şîrove kirin, lê wekî ya berê (1) tê hesibandin.
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
Mînakek konkret wiha ye. Gotina yekem wekî ya duyemîn tê hesibandin.
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
Tevhevkirina Lîsteya Nîşana Berfireh û Operatorên Ternary
Bikaranîna kêrhatî ya operatora sêalî dema ku navnîşan di navnîşana têgihîştina navnîşê de hilberandin e.
Bi berhevkirina operatora sêalî û nîşana têgihîştina navnîşê, gengaz e ku meriv hêmanên navnîşek biguhezîne an li gorî şert û mercan pêvajoyek din pêk bîne.
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]
Ji bo bêtir agahdarî li ser nîşana têgihîştina navnîşê, li gotara jêrîn binêrin.
Kombînasyona fonksiyonên nenas (biwêjên lambda) û operatorên sêalî
Operatora sêalî, ku dikare bi kurtahî di fonksiyonek nenas de jî were binav kirin (îfadekirina lambda), bikêr e.
get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'
print(get_odd_even(1))
# odd
print(get_odd_even(2))
# even
Bala xwe bidinê ku, her çend bi operatora sêalî re ne têkildar be jî, mînaka jorîn navek ji îfadeya lambda re destnîşan dike. Ji ber vê yekê, amûrên kontrolkirina otomatîkî yên wekî peymana kodkirinê ya Python PEP8 dibe ku Hişyariyek çêbike.
Ji ber ku PEP8 dema ku navan li fonksiyonan vedigire, karanîna defê pêşniyar dike.
Têgeha PEP8 wiha ye
- Gotinên lambda têne bikar anîn da ku tiştên gazîkirî wekî arguman derbas bikin, mînakî, bêyî navên wan
- Di bêjeyên lambda de, def bikar bînin da ku bi navê xwe diyar bikin