在python中,是否可能有一个函数依赖于同一级别上的另一个函数?

在python中,是否可能有一个函数依赖于同一级别上的另一个函数?,python,Python,我一直在尝试从函数中创建一种代码树,在树中的任何地方我都可以调用一个函数,它将跟随执行行中的每一个函数。我在func2中不断出现错误,比如说“第5行中没有定义a” def func1(): global a a = 2 func2() def func2(): global b b = a - 1 func3() 可以,但必须在调用函数之前定义它 下面的代码示例生成您得到的错误 def func1(): a=2 func2()#Python是一

我一直在尝试从函数中创建一种代码树,在树中的任何地方我都可以调用一个函数,它将跟随执行行中的每一个函数。我在func2中不断出现错误,比如说“第5行中没有定义a”

def func1():
    global a
    a = 2
    func2()
def func2():
    global b
    b = a - 1
    func3()

可以,但必须在调用函数之前定义它


下面的代码示例生成您得到的错误

def func1():
a=2

func2()#Python是一种惰性语言,在这种情况下,它意味着在实际调用代码之前,不会在编译过程中验证函数的存在。您在此行遇到错误:

b = a - 1
当您从func2()中未定义的变量赋值时

以下数据编译很好:

def func1():
    func2()

def func2():
    func3()
但是,如果尝试在不定义func3()的情况下调用func1(),则会在运行时遇到错误,因为Python意识到func3()尚未定义


简而言之:函数的定义顺序并不重要,只要它们都已定义。这并不意味着您可以在另一个函数中引用一个函数的局部变量。这在Python中是不允许的。

它说的是“a未定义”,因为它未在相应的函数中定义(或在更高的范围内)。。。您在func1中定义了“a”,并尝试在func2中使用。python在这里还应该做什么?它不会猜测您是指来自另一个函数的变量,因为在任何数量的其他函数中,参数的名称也可以相同。这并不是说我不明白,我只是不知道如何修复它。它仍然会引发错误,因为
a
未在
func2
中定义。它必须是全局的。将编辑帖子以使“a”成为全局变量。我在代码中有这样的代码,只是忘了在这里添加它。我用全局变量编辑了我的答案,调用func1只是为了测试。我试过了,但即使使用全局变量,仍然会出现错误。您使用的python版本是什么?对于我来说,代码在3.7和2.7中运行得很好。你说你不能在函数中引用局部变量,但是如果它们是由全局变量指定的全局变量呢var@JhonConners可以在同一个程序的任何函数中访问全局变量,并且在Python中不需要任何标识符。在脚本中,您试图访问另一个函数中一个函数的局部变量,这是不允许的。