Python-NameError:name';搜索固定装置';没有定义

Python-NameError:name';搜索固定装置';没有定义,python,Python,我在这里做一个程序,我得到了错误。如何修复它,因为我已经定义了函数,但它说我没有 Traceback (most recent call last): File "G:/Practice Program/Task3 Practice/Task3_Own_copy.py", line 19, in <module> menu() File "G:/Practice Program/Task3 Practice/Task3_Own_copy.

我在这里做一个程序,我得到了错误。如何修复它,因为我已经定义了函数,但它说我没有

Traceback (most recent call last):
  File "G:/Practice Program/Task3 Practice/Task3_Own_copy.py", line 19, in <module>
    menu()
  File "G:/Practice Program/Task3 Practice/Task3_Own_copy.py", line 9, in menu
    search_fixture()

假设缩进如您所述是正确的,问题在于Python解释文件的方式。它在读取函数时定义函数。在您的例子中,它试图访问search_fixture()函数,但它还没有访问它,因此它没有定义


交换函数的顺序,您的问题就会得到解决。我试着复制和粘贴您的代码,重现了问题,移动了搜索夹具定义,使其位于菜单之前,并且成功了。

假设缩进如您所述是正确的,问题在于Python解释文件的方式。它在读取函数时定义函数。在您的例子中,它试图访问search_fixture()函数,但它还没有访问它,因此它没有定义

交换函数的顺序,您的问题就会得到解决。我尝试复制和粘贴您的代码,重现问题,移动搜索夹具定义,使其位于菜单之前,并且工作正常。

Python(和大多数其他语言)自上而下执行。如果您正在定义function(即调用另一个尚未定义的FunctionB),然后调用function,则您正在尝试间接调用尚未定义的FunctionB

这就是你正在做的:

def FunctionA():
    FunctionB()
FunctionA()

def FunctionB():
    print("inside of B")
FunctionB()
这将导致错误,因为从上到下,它在到达时不知道
FunctionB()
是什么,因为它尚未定义

通常,单文件python程序将首先定义所有函数,然后调用它们

这就是你想要的:

def FunctionA():
    FunctionB()
def FunctionB():
    print("inside of B")

FunctionA()
FunctionB()
Python(和大多数其他语言)从上到下执行。如果您正在定义function(即调用另一个尚未定义的FunctionB),然后调用function,则您正在尝试间接调用尚未定义的FunctionB

这就是你正在做的:

def FunctionA():
    FunctionB()
FunctionA()

def FunctionB():
    print("inside of B")
FunctionB()
这将导致错误,因为从上到下,它在到达时不知道
FunctionB()
是什么,因为它尚未定义

通常,单文件python程序将首先定义所有函数,然后调用它们

这就是你想要的:

def FunctionA():
    FunctionB()
def FunctionB():
    print("inside of B")

FunctionA()
FunctionB()

对于你的信息员来说,这两个函数都是一致的,但是这里的格式很奇怪。缩进可能是你问题的关键,所以请在你的计算机上设置一个格式。问题是
如果choice==“A”:
菜单()
中。在解释器点击该行时,
search\u fixture
未定义。。。从上到下浏览代码。将来,如果您想发布代码,只需将整个内容复制/粘贴为一块,突出显示所有内容,然后点击
CTRL
+
k
或单击编辑器中的
{}
按钮。它将为您排序格式。对于您的信息人员,这两个函数都在同一条线上,但这里的格式很奇怪。缩进可能是您的问题的关键,因此请在您的计算机上获得它时努力设置格式。问题是
如果choice==“A”:
中的
菜单()
。在解释器点击该行时,
search\u fixture
未定义。。。从上到下浏览代码。将来,如果您想发布代码,只需将整个内容复制/粘贴为一块,突出显示所有内容,然后点击
CTRL
+
k
或单击编辑器中的
{}
按钮。它将为您排序格式。我很感激,但是,我需要问题提示first@Hayden然后你需要重构你的代码。没有其他方法可以合理地执行您想要执行的操作。如果search_fixture不需要再次调用菜单,您可以将对search_fixture()的调用保留在文件底部。仅移动函数定义。但是,如果您需要让他们互相调用(可能在搜索完成后打开菜单),那么最好将其转换为类。然后,方法的顺序无关紧要,它们可以互相调用。我很感激,但是,我需要问题提示first@Hayden然后你需要重构你的代码。没有其他方法可以合理地执行您想要执行的操作。如果search_fixture不需要再次调用菜单,您可以将对search_fixture()的调用保留在文件底部。仅移动函数定义。但是,如果您需要让他们互相调用(可能在搜索完成后打开菜单),那么最好将其转换为类。那么,方法的顺序就不重要了,它们可以互相调用。也可以用于将来的引用也可以用于将来的引用