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

Why am I getting a NameError when I try to call my function?

这是我的代码:

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?

你不能调用一个函数,除非你已经定义了它。将 def createDirs(): 块移至文件顶部,导入下方。

有些语言允许您在定义函数之前先使用它们。例如,javascript 称此为 "hoisting"。但是 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()

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