Tingimuslause lihtsustamine

Tihti annab tingimuslauseid lihtsustada. Parandame ühe lihtsa funktsiooni (Funktsiooni mõiste ja kasutamine) stiili.

def is_even(n):
    even = (n % 2 == 0)
    if even == True:
        return True
    else:
        return False

Kõigepealt võib lihtsutada avaldist even == True. Piisab kui kirjutada lihtsalt even, sest muidu me kontrollime True == True või False == True ehk tulemus sõltubki even tõeväärtusest.

def is_even(n):
    even = (n % 2 == 0)
    if even:
        return True
    else:
        return False

Kui natuke mõelda, siis saab alljärgnevat tingimust funktsioonides tagastamisel lihtsustada.

if (condition):
    return True
else:
    return False

# Return value correlates with condition value, so we can simplify:
return condition

Meie näite puhul siis:

def is_even(n):
    even = (n % 2 == 0)
    return even

Lisame ka korraliku Docstringi ja muutuja even ei anna meile hetkel palju juurde, seega võib selle eemaldada.

def is_even(n):
    """
    Checks if the number is even.
    :param n: number to check
    :return: True if even, else False
    """
    return n % 2 == 0

Saime esialgsega võrreldes palju puhtama ja loetavama koodi.

Tingimuslause ühel real

Pythonis on olemas ternary operator ehk tingimuslauseid on võimalik kirjutada ühele reale.

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

Esimeses näites on tingimuslause kirjutatud ühele reale ja teises näites mitmele reale:

# <value_when_true> if <condition> else <value_when_false>

fruit = 'Melon'
is_melon = True if fruit == 'Melon' else False

print(is_melon)  # --> True

vs

fruit = 'Melon'
is_melon = False
if fruit == 'Melon':
    is_melon = True

print(is_melon)  # --> True