The first function adds two numbers, the second function adds them twice. What is the purpose of Z? I get that x and y are the numbers you're adding together. But what is Z?
def add(x, y):
return x y
def twice(z, x, y):
return z(z(x, y), z(x, y))
a = 5
b = 10
print(twice(add, a, b))
CodePudding user response:
z represents the function that you want to execute twice. In your example:
twice(add, a, b)
twice received three arguments, add, a, and b. add is a reference to the add function, and becomes z instead the twice function. You might imagine a scenario in which you pass a different hypothetical function subtract to twice.
CodePudding user response:
In twice(z, x, y), z is a function. So when you call twice(add, a, b), z is the function add. Therefore return z(z(x, y), z(x, y)) would be
return add(add(a, b), add(a, b))
So it calculates (a b) (a b).
If you pass, for example, a function sub = lambda x, y: x - y, then twice(sub, a, b) will return sub(sub(a, b), sub(a, b)) instead, i.e., (a - b) - (a - b).
Another example:
print(twice(lambda x, y: x ' ' y, 'hello', 'world'))
# hello world hello world
