Sreekanth
Sreekanth

Reputation: 87

How to call a function, it define in another function in python?

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

Upvotes: 0

Views: 435

Answers (3)

danglingpointer
danglingpointer

Reputation: 4920

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

Upvotes: 0

NoOne
NoOne

Reputation: 27

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()

Upvotes: 1

Ziyad Edher
Ziyad Edher

Reputation: 2150

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:

  • Place inner in a broader scope (i.e. outside out) and add to it a print(var1) statement.
  • If it is required to have the 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.

Upvotes: 0

Related Questions