[Tutor] Function not returning 05 as string
Steven D'Aprano
steve at pearwood.info
Mon Apr 13 14:56:32 CEST 2015
On Mon, Apr 13, 2015 at 08:11:46AM -0400, Ken G. wrote:
> I am sure there is an simple explanation but when I input
> 5 (as integer), resulting in 05 (as string), I get zero as the end
> result. When running the code:
> number01 = 0
Here you set the variable "number01" to the int 0.
> numberentry()
Here you call the function. It returns "05", but you don't do anything
with it, so it just gets dropped on the floor and thrown away.
> print
> print number01
Here you print the variable number01, which is still the int 0,
unchanged.
I think where you are mislead is that you are not aware, or have
forgotten, that global variables and local variables are different. So a
variable "x" outside of a function and a variable "x" inside a function
are different variables. Think of functions being like Los Vegas: "what
happens in Vegas, stays in Vegas" -- function local variables don't leak
out and have effects outside of the function except via the "return"
statement, and even then only if the caller assigns the result to
another variable:
function() # return result is thrown away
x = function() # return result is assigned to x
The other way to have an effect outside of the function is to use global
variables, and the global keyword. This is occasionally necessary, but I
strongly recommend against it: it is poor programming practice and a bad
habit to get into.
--
Steve
More information about the Tutor
mailing list