I’m trying to learn programming through Python and I like to know if it’s possible to get just the return value of a function and not its other parts. Here’s the code:
Let’s say, this is the main function:
variable_a = 5
while variable_a > 0 :
input_user = raw_input(": ")
if input_user == "A":
deduct(variable_a)
variable_a = deduct(variable_a)
else:
exit(0)
Then this is the deduct function:
def deduct(x):
print "Hello world!"
x = x - 1
return x
What happens is that, it does the calculation and deduct until variable_a reaches 0. However, “Hello world!” gets printed twice, I think because of variable_a = deduct(variable_a) (correct me if I’m wrong). So I was thinking, can I just capture the return value of deduct() and not capture the rest? So that in this instance, after going through deduct(), variable_a would just have a plain value of 2 (without the “Hello world!”).
Am I missing things? 😕
Editor’s note: I remove the blank lines, so it can be pasted to REPL.
The printing of “Hello world” is what’s known as a side effect – something produced by the function which is not reflected in the return value. What you’re asking for is how to call the function twice, once to produce the side effect and once to capture the function return value.
In fact you don’t have to call it twice at all – once is enough to produce both results. Simply capture the return value on the one and only call: