当我尝试调用我的函数时为什么会出现NameError?

时间:2018-05-08 15:22:31

标签: python function nameerror

这是我的代码:

import os

if os.path.exists(r'C:\Genisis_AI'):
    print("Main File path exists! Continuing with startup")
else:
    createDirs()

def createDirs():
    os.makedirs(r'C:\Genisis_AI\memories')

执行此操作时,会抛出错误:

File "foo.py", line 6, in <module>
    createDirs()
NameError: name 'createDirs' is not defined

我确定它不是拼写错误而且我没有拼错该函数的名称,为什么我会收到NameError?

1 个答案:

答案 0 :(得分:9)

除非您已经定义了函数,否则无法调用函数。将def createDirs():块移动到文件顶部,位于导入下方。

某些语言允许您在定义函数之前使用它们。例如,javascript称之为“吊装”。但Python并不是其中一种语言。

请注意,允许在高于创建函数的行的行中引用函数,只要按时间顺序定义在使用之前发生。例如,这是可以接受的:

import os

def doStuff():
    if os.path.exists(r'C:\Genisis_AI'):
        print("Main File path exists! Continuing with startup")
    else:
        createDirs()

def createDirs():
    os.makedirs(r'C:\Genisis_AI\memories')

doStuff()

即使在第7行调用createDirs()并且在第9行定义了它,但这不是问题,因为def createDirs在第{12}行之前执行{。}}。