如何调用一个函数,它在python的另一个函数中定义?

时间:2017-04-06 07:48:20

标签: python

def out():
   var1 = "abc"
   print(var1)

   def inner():
      var2 = "def"

我只想打电话给#34; Inner" function ...最终输出应该只打印var2而不是var1 ...

提前谢谢

3 个答案:

答案 0 :(得分:1)

如果您不想运行该功能的某些部分' out'你可以使用参数。

def out(choice=True):
  if choice :
    var1 = "abc"
    print(var1)
 else :
    def inner():
       var2 = "def"
       print(var2)
    inner()

答案 1 :(得分:0)

您将无法从inner函数外部调用out,因为inner仅在out内定义,除非您创建对{{1}的引用来自inner函数之外的}。此外,out没有输出任何内容,因为它没有打印语句。

要解决此问题,您有两种选择:

  • inner置于更广泛的范围内(即inner之外)并添加out声明。
  • 如果必需print(var1)函数位于inner内,则只需out作为closureinner返回在out内也有print语句;或者只是从inner内部调用它。这有副作用,即执行out内的任何语句,直到返回闭包。

答案 2 :(得分:0)

您尝试的方法称为嵌套函数:

您可以通过此答案获取有关nested function in Python的信息。

有关closure

的其他一些信息

另一种方法是,

def fun1():
    x = 11
    def fun2(a=a):
        print x
    fun2()

fun1()

<强>输出:

prints 11

示例2:

def f1(x):
    def add(y):
        return x + y
    return add

res = f1(5)
print(res(10))  # prints 15