在 Python 中调用嵌套函数

Call a nested function in Python

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

例如:

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

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

但我想做类似的事情:

first(10).second()

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

我说得对吗?

为什么不使用 class?

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

    def second(self):
        print(x)

First(3).second()

所有 Python 函数都是闭包这一事实是一个很棒的特性,但它相当先进。 类 是存储状态的常用位置。

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

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

    return second

x = first(10)
x()

或者像这样

first(10)()

如其他人所述,请改用 class

如果需要,您可以 return 多个函数:

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

答案与信誉分数有任何相似之处纯属巧合。