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

Linux中变量名含-时如何使用eval?报错原因及解决方法

问题解答

为什么my-value会被拆分识别?

在Python里,-是减法运算符,当你执行eval('my-value')时,解释器会把这段字符串解析成表达式my - value——也就是试图计算变量my减去变量value。因为你既没定义my也没定义value,所以抛出NameError: name 'my' is not defined的错误。

而myval是符合Python变量命名规则的标识符(仅由字母组成),所以eval('myval')会直接尝试查找名为myval的变量,找不到就报错NameError: name 'myval' is not defined,二者的解析逻辑完全不同。

如何处理包含-的标识符?

Python的变量命名规则明确禁止使用-,变量名只能由字母、数字、下划线组成,且不能以数字开头。如果业务场景中必须使用带-的标识,别直接把它当变量用,推荐用字典存储:

  1. 先定义字典,把带-的标识作为键:
my_data = {'my-value': 42}
  1. 若一定要用eval(不推荐,eval存在安全风险),可以这么写:
eval("my_data['my-value']")
  1. 更安全的方式是直接用字典索引,完全不用eval:
print(my_data['my-value'])  # 输出42

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:04:52