Let's write a function that does the same thing as an if
statement.
def if_function(condition, true_result, false_result): """ 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 """ if condition: return true_result else: return false_result def with_if_statement(): """ >>> result = with_if_statement() 47 >>> print(result) None """ if cond(): return true_func() else: return false_func() def with_if_function(): """ >>> result = with_if_function() 42 47 >>> print(result) None """ 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)