def A():
def B():
#do something
a = A()
a.B()
为什么Python中不可能有上述(这样简单的代码)?是否存在一种“pythonic”(清晰,不出奇,非hacky)的解决方法,它不会将A()转换为类?为什么Python不能从外部访问子功能?
编辑1:上面向我解释了B对A是局部的,因此它只有在A被评估时才存在。所以如果我们把它变成全球性的(并且一定不要让它被覆盖),那么为什么这不起作用呢?
def A():
def B():
#do something
return A()
a = A()
a.B()
它说它返回一个'NoneType'对象。
遗憾的是没有用的,因为初始化'A.B'有必要调用'A()'至少一次。 :( – prokher
@prokher有必要调用A甚至创建一个嵌套函数,而且每次调用A时它都是一个不同的函数。这是首先嵌套函数的唯一原因。 –