#function definition def f(x): #x is a formal parameter x = x + 1 print('in f(x), x =', x) return x x = 3 z = f(x) #x is the actual parameter of this function call. return value is assigned to zAt the instant when execution is at the start of
f
, there are two scopes: global scope and f scope. The global scope maps f -> some code
, x -> 3
and z
is currently undefined. In f scope
, x -> 3
At the instant when execution is at the end of f
:
The global scope maps f -> some code
, x -> 3
and z
is currently undefined. In f scope
, x -> 4
At the instant when execution has returned from f
and z
has been assigned: there is only one scope, which is the global scope.
The global scope maps f -> some code
, x -> 3
and z -> 4
. Notice that z
is assigned the value returned (using the return
keyword) by f
.
Consider the following (buggy) function that does not contain a return
statement:
#function definition def f(x): #x is a formal parameter x = x + 1 x = 3 z = f(x) #x is the actual parameter of this function call. return value is assigned to z
None
if no return
givenreturn
vs. print
return |
print |
---|---|
return only has meaning inside a function
|
print can be used outside functions
|
only one return executed inside a function
|
can execute many print statements inside a function |
code inside function but after return statement not executed | code inside function can be executed after a print statement |
has a value associated with it, given to function caller | has a value associated with it, outputted to the console |