是否可以调用现有函数中定义的嵌套函数:
例如:
def first(x):
def second():
print(x)
return second
我知道我可以这样做:first(10)()
但我想做类似的事情:
first(10).second()
我的想法是,这是不可能的,因为在调用second
之前first
不存在。
我是对的吗?
答案 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
与答案的声誉分数有任何相似之处是巧合。