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

为何Pylint提示我的字典属性是未定义变量?

为啥Pylint说字典里的name是未定义变量?

先看你这段代码里的问题行:

category = { name: 'test' }

虽然你的代码现在能运行,但Pylint的提示真的没冤枉你——这是个很容易踩的Python语法坑。

问题到底出在哪?

在Python的字典字面量里,如果你写name: 'test',Python会把冒号左边的name当成变量名来解析,而不是你以为的字符串键。也就是说,它会在当前作用域里找一个叫name的变量,但你的代码里根本没定义过这个变量——这就是Pylint报错的核心原因。

那为啥代码还能跑?
这绝对是巧合!大概率是你运行代码的环境里,恰好存在一个名为name的全局变量(比如某些交互式Python环境、或者你导入的某个库无意中定义了这个变量),Python找到了它,所以没直接抛出NameError。但换个干净的环境运行,这段代码肯定会直接报错崩溃。

怎么写才对?

如果你想让字典的键是字符串'name',必须给它加上引号,这才是Python里定义字符串键的标准写法:

category = { 'name': 'test' }
# 用双引号也完全没问题
category = { "name": "test" }

补充个小知识:Python 3.7+支持一种“键省略引号”的写法,但仅限键是合法标识符且已经被定义为变量的场景,显然你这里不属于这种情况,所以引号绝对不能省。

最后提个醒

这种“碰巧能跑”的代码非常危险,属于依赖环境的脆弱写法。按照Pylint的提示修正后,代码不仅能通过检查,可读性和稳定性也会大大提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:58:16