为什么Pycharm的检查器抱怨“d = {}”?
当你用 d = {}
来初始化一个字典时,Pycharm 的代码检查工具会发出警告,内容是:
这个字典的创建可以用字典字面量来重写。
如果我把它改成 d = dict()
,警告就消失了。因为 {}
本身就是一个字典字面量,所以我觉得这个提示可能是错误的。而且,d = {}
和 d = dict()
都是有效的写法,符合 Python 的风格。
有一个相关的问题似乎得出的结论是,这只是风格或个人喜好的问题:“d = dict()” 和 “d = {}” 的区别
那么,为什么 Pycharm 会对 d = {}
提出警告呢?
更新:
Mac 指出了关键点。这个警告其实是针对多行代码的,而不仅仅是被标记的那一行。
Pycharm 似乎会检查一系列连续的语句,其中你初始化了一个字典,然后又给字典设置了值。例如,下面的代码会触发警告:
d = {}
d['a'] = 1
但这段代码就不会:
d = {}
pass
d['a'] = 1
5 个回答
12
对于那些像我一样喜欢用一行代码来初始化字典的人
d = {
'a': 12,
'b': 'foo',
'c': 'bar'
}
而不是写很多行代码,比如
d = dict()
d['a'] = 12
d['b'] = ....
最后我得到了这个:
d = dict()
d.update({
'a': 12,
'b': 'foo',
'c': 'bar'
})
Pycharm对此没有任何抱怨
23
你可以在项目设置或默认设置中关闭这个功能。
- 先去设置,找到检查项,然后选择Python。
- 把“字典创建可以被字典字面量重写”前面的勾去掉。
268
在你声明字典之后的代码是什么?
我觉得如果你有类似下面的代码,PyCharm会报错:
dic = {}
dic['aaa'] = 5
因为你可能写了
dic = {'aaa': 5}
注意:如果你使用函数 dict()
,错误就会消失。这并不一定意味着PyCharm认为 dict()
是一个字面量。它可能只是表示它对此没有抱怨:
dic = dict()
dic['aaa'] = 5