You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用自定义createDirs函数时出现NameError错误的原因是什么?

NameError: name 'createDirs' is not defined (even with no typos)

这个问题其实很常见,根源在于Python的代码执行顺序——你在调用createDirs()的时候,这个函数还没被Python“认识”呢!

Python是从上到下逐行解释执行代码的,我们来拆解下你的代码执行流程:

  1. 导入os模块
  2. 检查C:\Genisis_AI路径是否存在
  3. 如果路径不存在,执行createDirs()
  4. 直到这一步,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:15:40