Let's write a function that does the same thing as an if
statement.
""" Return true_result if condition is a true value, and false_result otherwise. >>> if_function(True, 2, 3) 2 >>> if_function(False, 2, 3) 3 >>> if_function(3==2, 3+2, 3-2) 1 >>> if_function(3>2, 3+2, 3-2) 5 """ def if_function(condition, true_result, false_result): if condition: return true_result else: return false_result
""" >>> result = with_if_statement() 47 >>> print(result) None """ def with_if_statement(): if cond(): return true_func() else: return false_func()
""" >>> result = with_if_function() 42 47 >>> print(result) None """ def with_if_function(): return if_function(cond(), true_func(), false_func())
Despite the doctests above, this function actually does not do the same thing as an if
statement in all cases. To prove this fact, write functions cond
, true_func
, and false_func
such that with_if_statement
prints the number 47, but with_if_function
prints both 42 and 47.
def cond(): return False
def true_func(): print(42)
def false_func(): print(47)