不清晰的建议:“这个字典可以写成字典文字。”

3
我正在使用PyCharm编写API的自动化测试。PyCharm会在我的测试中突出显示一行,并建议:

这个字典可以被写成字典文字。

是否有更好的“样式”可用以消除此消息?
def test_get_products_combination_2(self):
    """
    TC-586:GET Products - combination 2 valid
    """
    params = {} # <--- this line is highlighted with the message above
    params["start_at_document"] = "100"
    params["document_limit"] = "2"
    path = "/v1/users/%s/products" % self.user_id
    r = self.client.request(path, params)
    self.assertEqual(r.status_code, 200)
2个回答

3

如果你将params更改为字典,它应该可以解决警告:

params = {
    "start_at_document": "100",
    "document_limit": "2"
}

你认为这种方式更好吗? - raitisd
我个人认为这种风格更易读。如果你不喜欢警告,PyCharm 中可能有禁用它的选项。 - niemmi
@Raituha:像这样使用文字字面量比你的代码更简洁,看起来更清晰。此外,字典是在运行函数定义编译为字节码之前创建一次,这比每次调用函数重新创建它要更有效率,而这正是你的代码所做的。 - PM 2Ring
@PM2Ring,实际上你对创建的理解只有一半是正确的。不过确实更有效率。 - Antti Haapala -- Слава Україні
@Raituha:补充Antti的评论,dict 字面量确实比逐步赋值更高效,但不幸的是,在标准 Python(即 CPython)中它们实际上并没有在编译时预构建。对此感到抱歉。然而,在最近的 CPython 版本中,字面量元组、列表、集合和冻结集合是在编译时预构建的。另外,字面量列表会转换为元组,字面量集合会转换为冻结集合(在安全的情况下)。 - PM 2Ring

2

PyCharm实际上可以直接支持这个重构。只需导航到警告行,然后按下Alt+Enter;弹出菜单出现;第一项说“替换字典创建”;因此再次按下Enter即可。

params = {"start_at_document": "100", "document_limit": "2"}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接