在Python中调用嵌套函数

时间:2017-09-22 10:03:04

标签: python function nested-function

是否可以调用现有函数中定义的嵌套函数:

例如:

def first(x):
    def second():
        print(x)
    return second

我知道我可以这样做:first(10)()

但我想做类似的事情:

first(10).second()

我的想法是,这是不可能的,因为在调用second之前first不存在。

我是对的吗?

3 个答案:

答案 0 :(得分:2)

为什么不使用课程?

class First:
    def __init__(self, x):
        self.x = x

    def second(self):
        print(x)

First(3).second()

所有Python函数都是闭包的事实是一个很好的功能,但它相当先进。类是存储状态的通常位置。

答案 1 :(得分:1)

虽然这不是正确的方式,但只是为了好玩。 你在这里做的是返回第二个函数的实例,所以在调用它时,不需要按名称调用它,jsut使用变量。

def first(x):
    def second():
        print(x)

    return second

x = first(10)
x()

或者像这样

first(10)()

如其他人所说,请改用class

答案 2 :(得分:1)

如果需要,可以通过以下方式返回多个功能:

class Box(object):
    def __init__(self,**kw): vars(self).update(kw)
def first(x):
    def second():
        print(x)
    def third(y): return x+y
    return Box(second=second,third=third)

first(10).second()   # prints 10
x=first(15)
x.second()           # prints 15
print(x.third(10))   # prints 25

与答案的声誉分数有任何相似之处是巧合。