Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以调用Python中另一个函数中定义的函数吗?_Python_Function - Fatal编程技术网

可以调用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中的私有变量。