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
相关产品推荐
相关产品推荐

