给定函数内的函数,如何从外部函数调用内部函数?
离。
def a():
print 'a'
def b():
print 'b'
def c():
print 'c'
def d():
# how would I now call a, b and c from here?
def e():
# how would I call a, b and c from here as well?
是的,我知道它可怕的代码结构,不应该这样做 - 但你是怎么做到的?
谢谢
编辑:使用装饰器的任何方法吗?
答案 0 :(得分:7)
你做不到。 b
和c
是a
中的局部变量,除a
正在执行外,不存在。
(因为这些是常量,你可以从技术上通过a.__code__.co_consts
访问它们,但即使你对可怕的代码结构没有问题,这也不是一个真正的解决方案。你必须用{{1}执行函数并且你不能将参数传递给它。)
答案 1 :(得分:2)
你不能,因为这些函数是在调用外部函数时创建的,并在外部函数退出时被销毁。如果你想从其他地方访问它们,你需要在内部函数的某个地方引用一个内部函数。
答案 2 :(得分:1)
使用此结构,您只能在您指定的两个地方呼叫a()
。 b()
仅在a()
运行时定义,而c()
仅在b()
运行时定义。 a()
可以从任何地方调用,因为它全局定义。
例如:
def a():
print 'a'
def b():
print 'b'
def c():
print 'c'
def d():
# how would I now call a, b and c from here?
a()
def e():
a()
# how would I call a, b and c from here as well?
d()
结果
a
(同样,e()
仅在d()
正在运行时定义。d()
与a()
一样,是全局定义的。)
答案 3 :(得分:0)
您可以更改外部功能,以便返回内部功能