Python字典的编码规范
我有一个Python字典,但它的定义太长,不能放在一行里。有人能告诉我关于Python字典的写法规范吗?我现在的写法看起来不太好。
initialstate = {
'state':grid,
'f':find_manhattan_distance(grid,goal),
'g':0,
'h':find_manhattan_distance(grid,goal),
'ancestor': None
}
5 个回答
2
你可以选择以下几种选项(还有其他一些选项):
initialstate = {
'state': grid,
'f': find_manhatten_distance(grid,goal),
'g': 0,
'h': find_manhatten_distance(grid,goal),
'ancestor': None,
}
- 优点: 适合版本控制:可以在不影响其他行的情况下,删除或插入行(包括第一行)。顺便说一下,这只有在你加上前面的
,
时才适用。 - 优点: 为项目提供了很多横向空间。
- 缺点: 可能不太明显这个字典是赋值给
initialstate
的。
initialstate = { 'state': grid,
'f': find_manhatten_distance(grid,goal),
'g': 0,
'h': find_manhatten_distance(grid,goal),
'ancestor': None, }
- 优点: 非常紧凑,最大限度地利用了可用的横向空间。
- 优点: 保持了变量在左,值在右的常规语义,这样就非常清楚地知道赋值在哪里。
- 缺点: 如果变量名很长,可能会没有空间。
- 缺点: 不太适合版本控制:添加或删除行,甚至更改变量名都会导致差异。
4
大家对这种格式的最佳写法看法不一。我个人喜欢这样:
initialstate = {
'state': grid,
'f': find_manhattan_distance(grid, goal),
'g': 0,
'h': find_manhattan_distance(grid, goal),
'ancestor': None,
}
我喜欢这种风格的原因:
- 这种格式可以很方便地进行多层嵌套。如果把代码缩进到打开的大括号下面,经过两层后就会缩进得太多了。
- 最后一个项目后面有个逗号,这样我可以在不改变当前最后一行的情况下,添加新的一行。
- 关闭的大括号缩进跟其他Python的视觉风格一致,没有明显的结束行,只是通过缩进的减少来表示代码块的结束。
(顺便说一句,“Manhattan”这个词里只有字母a……)
10
pep8.py
提到:
mydict.py:2:28: E231 missing whitespace after ':'
mydict.py:1:15: E222 multiple spaces after operator
试试这个:
initialstate = {
'state': grid,
'f': find_manhatten_distance(grid, goal),
'g': 0,
'h': find_manhatten_distance(grid, goal),
'ancestor': None
}
注意逗号和运算符后面的空格变化。这个版本通过了所有 pep8.py
的测试。