def out():
var1 = "abc"
print(var1)
def inner():
var2 = "def"
I want to call only "Inner" function... the final output should print only var2 not var1...
Thank you in advance
def out():
var1 = "abc"
print(var1)
def inner():
var2 = "def"
I want to call only "Inner" function... the final output should print only var2 not var1...
Thank you in advance
If you don't want to run some part of the function 'out' you could use parameters.
def out(choice=True):
if choice :
var1 = "abc"
print(var1)
else :
def inner():
var2 = "def"
print(var2)
inner()
You will not be able to call inner from outside the out function, since inner is only defined inside out, unless you create a reference to inner from outside the out function. In addition, inner is not outputting anything since it does not have a print statement.
To combat this, you have two options:
inner in a broader scope (i.e. outside out) and add to it a print(var1) statement.inner function be inside out then just return inner as a closure from out, with the print statement also inside inner; or just call it from inside out. This has a side-effect of also executing whatever statements are inside out up to returning the closure.The method your trying is called as nested functions:
You can chek this answer for information about nested function in Python.
Some other information about closure
Another method is,
def fun1():
x = 11
def fun2(a=a):
print x
fun2()
fun1()
Output:
prints 11
Example 2:
def f1(x):
def add(y):
return x + y
return add
res = f1(5)
print(res(10)) # prints 15