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

调用自定义函数时触发NameError,脚本无法运行求助

调用自定义函数时触发NameError,脚本无法运行求助

嘿,我来帮你看看问题出在哪~ 你遇到的这个NameError其实是Python里新手最常踩的坑之一,咱们一点点捋清楚:

首先看报错信息里的NameError: name 'yes' is not defined,核心问题特别明确:你在调用dictionary(yes)的时候,把yes当成变量来用了,但你根本没定义过这个变量啊!你其实是想把**字符串"yes"**传进函数里,对吧?

再仔细扒扒你写的代码,还有几个逻辑小问题:

  • 函数里的if x == yes:这里的yes同样是未定义的变量,你应该和字符串"yes"做比较,不是裸写yes
  • yes = print("verbal agreement, consent")这行完全多余,print()函数执行后就会直接输出内容,而且它的返回值是None,你把它赋值给变量再打印,最后只会多输出一个None,纯纯的画蛇添足。

给你改好了可以正常运行的代码,你瞅瞅:

def dictionary(x):
    # 把比较对象改成字符串"yes",和传入的参数匹配
    if x == "yes":
        # 直接打印定义内容就行,不用绕弯子赋值
        print("verbal agreement, consent")

# 调用函数时要传字符串"yes",记得用引号包起来!
dictionary("yes")

另外,如果你想做一个真正能用的字典工具,其实用Python自带的字典类型会更方便,代码也更简洁,给你个示例参考:

# 先定义好单词和对应定义的字典
word_dictionary = {
    "yes": "verbal agreement, consent",
    "hello": "greeting used to address someone",
    "python": "a high-level programming language"
}

def lookup_word(x):
    # 用get方法可以处理单词不存在的情况,返回自定义提示
    print(word_dictionary.get(x, "抱歉,这个单词我还没收录哦!"))

# 调用试试
lookup_word("yes")
lookup_word("hello")
lookup_word("test")

这样是不是清晰多啦?你之前试的=/==/:=那些操作,其实和这次的报错没关系,主要是没搞清楚变量和字符串字面量的区别~

备注:内容来源于stack exchange,提问作者Ben Miller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:48:01