可以调用Python中另一个函数中定义的函数吗?
例如:可以调用Python中另一个函数中定义的函数吗?,python,function,Python,Function,例如: def foo(): def bar(): 回来 #一些代码 回来 def foo2(): #在这里调用bar()? 是否可以将bar()放入foo()中并在foo2()中调用它?在某种程度上,您可以这样做-通过声明bar全局: def foo(): global bar def bar(): print("In bar") 但是除非首先调用foo,否则不能调用bar,因为这是定义bar的函数: bar() #Traceback (most recent ca
def foo():
def bar():
回来
#一些代码
回来
def foo2():
#在这里调用bar()?
是否可以将
bar()
放入foo()
中并在foo2()
中调用它?在某种程度上,您可以这样做-通过声明bar
全局:
def foo():
global bar
def bar():
print("In bar")
但是除非首先调用foo
,否则不能调用bar
,因为这是定义bar
的函数:
bar()
#Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
#NameError: name 'bar' is not defined
foo()
bar()
#In bar
bar()
#回溯(最近一次呼叫最后一次):
#文件“”,第1行,在
#NameError:未定义名称“bar”
foo()
bar()
#酒吧
总的来说,这是一个非常糟糕的主意。不,这是不可能的。你到底想做什么?@Tomalak我想在不重构代码的情况下将
foo()
的一些逻辑暴露给其他方法。不,这在理论上是不可能的,你可以深入研究foo.\uu code\uuu.co\u consts
,但在实践中-不要。“我想暴露foo()的一些逻辑。”你为什么不想重构它的代码呢?那是。。。本质上,重构是为了什么。我同意这是一个非常糟糕的想法。看来重构代码是一条出路。更不用说任何闭包变量会发生什么……对于未来者来说:闭包变量是bar()
可以通过foo()
的作用域访问的变量。这是函数式编程中的一种技术,用于生成具有不同“状态”的不同函数(即不同的bar()
),类似于OOP中的私有变量。