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
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.globals() on its first call. It's just not something you ever want to do.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
inner()and add aprintcall forvar2. This is unrelated to django and tkinter btw.var2to be printed when you have noprint(var2)? How do you want to call the function if you don't even return it in any way? Please, clarify your question.