调用自定义createDirs函数时出现NameError错误的原因是什么?
NameError: name 'createDirs' is not defined (even with no typos)
这个问题其实很常见,根源在于Python的代码执行顺序——你在调用createDirs()的时候,这个函数还没被Python“认识”呢!
Python是从上到下逐行解释执行代码的,我们来拆解下你的代码执行流程:
- 导入
os模块 - 检查
C:\Genisis_AI路径是否存在 - 如果路径不存在,执行
createDirs() - 直到这一步,Python才会往下读到
def createDirs():的函数定义
所以当Python执行到createDirs()时,它还没处理到后面的函数定义,自然就会抛出NameError,哪怕你后面确实写了这个函数。
修复方案
最简单的解决办法就是把函数定义移到所有调用它的代码前面,让Python先“知道”这个函数:
import os # 先定义函数,再调用 def createDirs(): os.makedirs(r'C:\Genisis_AI\memories') if os.path.exists(r'C:\Genisis_AI'): print("Main File path exists! Continuing with startup") else: createDirs()
额外小提示
- 按照Python的PEP8编码规范,函数名建议使用蛇形命名法(比如
create_dirs()代替createDirs()),这样代码可读性更好 - 如果因为某些原因不能提前定义函数,也可以用“函数提前声明”的方式,但这种场景很少见,一般还是把定义放在调用前更清晰
内容的提问来源于stack exchange,提问作者NaruS
相关产品推荐
相关产品推荐

