This dictionary creation could be rewritten as a dictionary literal ...

在编写Python代码的时候,这个代码提示你应该不陌生吧:

This dictionary creation could be rewritten as a dictionary literal ...
Inspection info: This inspection detects situations when dictionary creation could be rewritten with dictionary literal.

这种情况对应的代码是如下的形式:

# 定义一个字典变量
error_msg = {}

# 为字典变量赋值
error_msg['0000']='SUCCESS'
error_msg['0001']='SYSTM ERROR'
error_msg['0002']='NETWORK ERROR'

再看一下代码提示:This dictionary creation could be rewritten as a dictionary literal

意思是说,字典的创建应该使用“字典字面量”。这里引出两个问题:(1)什么是字面量?(2)什么是字典字面量?

先看第一个问题:什么是字面量?

答案很简单,诸如:整数、浮点数以及字符串,都是字面量,如下所示:

# 10是个整数字面量
number = 10

# Tom是个字符字面量
name = "Tom"

搞清楚了字面量,再看第二个问题,什么是字典字面量?

答案也很简单,大括号{}就是字典字面量,大括号就能表示一个字典变量。另外,还大括号可以进行扩展:

person = {"name":"Tom","address":"China BeiJing","age":20}

搞清楚了字典字面量,那么问题:This dictionary creation could be rewritten as a dictionary literal,就有了破解之道:

error_msg = {'0000':'SUCCESS','0001':'SYSTM ERROR','0002':'NETWORK ERROR'}

再反过来看未修订之前的代码,真是脱裤子放屁,多此一举啊

条条大路通罗马,其实定义字典还有一种方式,就是不使用大括号这种字面量,而是使用dict()函数的形式,如下所示:

# 定义一个字典变量
error_msg = dict()

# 为字典变量赋值
error_msg['0000']='SUCCESS'
error_msg['0001']='SYSTM ERROR'
error_msg['0002']='NETWORK ERROR'

用dict()定义字典,则不会再报错:This dictionary creation could be rewritten as a dictionary literal ...