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

Nar*_*ruS 2 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')
Run Code Online (Sandbox Code Playgroud)

当我执行它时,它会抛出一个错误:

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

我确定它不是拼写错误,我没有拼错函数的名称,为什么我得到一个NameError?

Kev*_*vin 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()
Run Code Online (Sandbox Code Playgroud)

即使createDirs()在第7行调用并且它在第9行定义,这也不是问题,因为def createDirs之前执行doStuff()第12行.