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

Python中NameError的含义是什么?我的代码触发该错误求排查

Python NameError 解释及你的代码错误分析

什么是NameError?

当你在代码里引用了一个Python还未定义、或者无法识别的名称(变量、函数、类等)时,就会触发NameError。简单说就是:你用了一个不存在的名字,Python找不到它。

你的代码里的错误点

1. 变量定义位置与作用域错误

  • 你在函数cauculator外部定义了div、mul、add、sub,但这些变量用到了函数的参数num_1和num_2——这两个参数只有在函数被调用时才会生成,函数外根本不存在num_1和num_2,代码一运行就会直接报NameError: name 'num_1' is not defined。
  • 函数cauculator内部试图引用a、b、c、d这些外部变量,虽然语法上允许,但结合你的逻辑,计算相关的变量(add/sub/mul/div)本来就应该放在函数内部,因为它们完全依赖函数的输入参数。

2. 函数调用方式错误

你写的print (cauculator) (3,8)是错误写法,正确的函数调用应该把参数放在函数名后的括号里:print(cauculator(3,8))。当前写法会先打印函数对象,后面的(3,8)会被当成独立的无效表达式,根本达不到调用函数的目的。

3. 字符串与数字拼接的隐性错误

就算解决了NameError,a+add这类代码也会报错——a是字符串,add是数字,Python不允许直接把字符串和数字相加,必须把数字转成字符串,比如写成a + str(add)。

修正后的代码示例

def calculator(num_1, num_2):
    # 计算逻辑放在函数内部,使用函数参数
    add = num_1 + num_2
    sub = num_1 - num_2
    mul = num_1 * num_2
    div = num_1 / num_2
    
    # 定义描述字符串
    a = "Added: "
    b = "Subtracted: "
    c = "Multiplied: "
    d = "Divided: "
    
    # 用f-string完成字符串拼接,自动处理类型转换
    result = f"{a}{add}\n{b}{sub}\n{c}{mul}\n{d}{div}"
    return result

# 正确调用函数
print(calculator(3, 8))
print(calculator(5, 2))
print(calculator(9, 5))

内容的提问来源于stack exchange,提问作者DarkGang2883

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:50:27