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

运行《Python基础教程》模板示例代码出现NameError: name 'x' not defined报错

报错产生原因
  1. eval() 函数的能力限制:Python 中 eval() 仅支持执行合法的表达式,而你测试文件中[x = 2]、[y = 3] 属于赋值语句,不属于表达式范畴,传入 eval() 会直接触发 SyntaxError。
  2. 原代码逻辑存在缺失:原代码的设计思路本就是通过捕获 SyntaxError 处理赋值类语句,但给出的代码在异常分支中仅返回了空字符串,没有执行赋值操作将变量写入作用域字典scope,导致x、y从未被定义,后续读取[x]时自然触发NameError。
修复方法

只需修改replacement函数的异常分支,增加exec执行赋值语句的逻辑即可:

def replacement(match):
    code = match.group(1)
    try:
        return str(eval(code, scope))
    except SyntaxError:
        # 执行赋值语句,将变量存入全局作用域字典scope
        exec(code, scope)
        return ''

修复后再次执行python template.py number.txt即可输出预期结果:The sum of 2 and 3 is 5.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:36:04