在 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
答案与信誉分数有任何相似之处纯属巧合。
是否可以调用在现有函数内定义的嵌套函数:
例如:
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
答案与信誉分数有任何相似之处纯属巧合。