0
I don't understand this code. Somebody help me!
Function as a object.
8 Answers
+ 3
You have to read the code from inside out:
In the inner parentheses, the function add is called two times for the values 5 and 10.
What's the result of the two calls, what is there after the return?
15+15.
Now for these values, add is called again - the result is 30.
And that is finally returned by do_twice and printed.
+ 4
That's better! There are two functions in this code. add(x,y) takes two variables (x and y) as parameters and will just return their sum.
So, for a = 5 and b = 10, add(a, b) will return 15.
The function do_twice is a bit tricky. It takes a function name (func) and two variables (x and y) as parameters. Here, we call the function with the parameters add (that's our function), a and b (these are our variables).
If you look at the return statement of do_twice, it looks liks this: func(func(x, y), func(x, y)).
If you replace "func" with the function name that the function receives as a parameter (=add) and x and y with the variables it receives as parameters (=a and b), the return statement actually looks like this:
return add(add(a, b), add(a, b))
or, if you insert the values of a and b:
return add(add(5, 10), add(5, 10))
The next step will be that the expressions within the parentheses are calculated. Both "add(5, 10)" will be replaced by the return value (15):
return add(15, 15)
Now, add() is called again and it adds 15 and 15. Again, add(15, 15) is replaced by the return value:
return 30
There's nothing more to calculate and the function do_twice() will return the value 30.
+ 3
To be fair, that's not really a code. It's just two words, function and argument
+ 2
You're welcome. Let's say thank you to HonFu too
+ 2
thank you HonFu
+ 1
Whoops. :)
+ 1
thank you Anna
0
def add(x, y):
return x + y
def do_twice(func, x, y):
return func(func(x, y), func(x, y))
a = 5
b = 10
print(do_twice(add, a, b))