Python括号约定

Python括号约定,python,coding-style,conventions,Python,Coding Style,Conventions,您认为在代码中编写字典文本时最常用的约定是什么 我将写一个可能的约定作为答案。我认为几乎没有标准 my_dictionary = { 1: 'something', 2: 'some other thing', } 我见过两种缩进方式: Indent 1: my_dictionary = { 'uno': 'something', 'number two': 'some other thing', } Indent 2: my_dictionary = {'u

您认为在代码中编写字典文本时最常用的约定是什么


我将写一个可能的约定作为答案。

我认为几乎没有标准

my_dictionary = {
    1: 'something',
    2: 'some other thing',
}
我见过两种缩进方式:

Indent 1:
my_dictionary = {
    'uno': 'something',
    'number two': 'some other thing',
}

Indent 2:
my_dictionary = {'uno': 'something',
                 'number two': 'some other thing',
                 }
我已经看到三个放置在端部支架上:

End 1:
my_dictionary = {'uno': 'something',
                 'number two': 'some other thing',
}

End 2:
my_dictionary = {'uno': 'something',
                 'number two': 'some other thing',
                 }

End 3:
my_dictionary = {'uno': 'something',
                 'number two': 'some other thing',}
有时你会证明这些价值观是正确的:

my_dictionary = {'uno':        'something',
                 'number two': 'some other thing',
                 }
有时甚至是冒号:

my_dictionary = {'uno'        : 'something',
                 'number two' : 'some other thing',
                 }
看起来很奇怪

有时你有一个结束逗号,有时没有:

my_dictionary = {'uno': 'something',
                 'number two': 'some other thing'}
有时你会把它们都粘在一排(如果合适的话)

每个人似乎都有自己的风格组合。就我个人而言,我倾向于你在例子中使用的风格,除非有理由不这样做。不这样做的常见原因是,当你把字典作为语句的一部分时。像这样:

amethodthattakesadict({'hey': 'this',
                       'looks': 'a',
                       'bit': 'shitty',
                      })

我建议您适应编写您正在编辑的代码的人的风格。如果是您的代码:按您喜欢的做。:-)

关于尾撑:我更喜欢这样:

my_dictionary = {
   'a': 'first value',
   'b': 'second',
   }
我将告诉您原因:因为Python代码缩进没有结束标记,所以代码缩进如下:第一行(if、while、def等)从子句的其余部分缩进,而所有其他行缩进的量相同。该条款的最后一行与其他所有内容一起缩进。与第一行缩进相同的下一行是下一个子句的第一行,而不是本子句的最后一行


因此,我喜欢使用类似于代码子句的约定缩进数据结构,即使数据结构有一个明确的结束标记,因此可以具有更大的灵活性。

如果字典太大,无法容纳一行,我会这样做:

d = \
   {
   'a' : 'b',
   'c' : 'd'
   }

缩进样式1结尾样式3(在Lennart的回答之后):

这可能是Python代码中括号内实体最无缝的缩进样式,因为它与Python的空白格式非常相似。在Python代码中使用C风格的缩进对我来说总是有点尴尬,我怀疑它主要是因为习惯于C语言的程序员(因为它们无处不在)可能没有接触到不同的缩进风格

一个缺点可能是在开头或结尾插入比在其他样式中要难一些。考虑到一个支持编写Python代码的适当编辑器,它应该不会有太大的区别

在上下文中尝试这种缩进样式,并将其与C样式缩进并排进行比较,然后确定哪一种缩进看起来更像Python和连贯性

也许这可以被称为lisp风格的缩进,因为它是lisp代码自几百年到几十年来缩进的方式,但例如,它也经常用于Smalltalk代码中。在讨论括号的位置(在类似Lisp的语言中)时,您经常会读到一件事:“为什么要给它们额外的行?它们有那么重要吗?”


不过,在一天结束时,这基本上是一件有趣的事情。

+1结尾的逗号。起初,我并不欣赏结尾的逗号在列表、dict等中的作用。但它确实简化了列表的后续编辑,无论您是在重新排序、复制/粘贴,或者添加新的项目。添加一行是一行带有逗号的差异。任何其他格式都是亵渎!开个玩笑:)这绝对是我最喜欢的。我想说我更喜欢在半Collon前面加一个空格(有时它有助于复制粘贴操作),但是,因为每个编辑器基本上都会自动格式化它(和JSON),而不需要空格,我想没有空格更容易接受。民意测验应该是community wiki+1,以便很好地描述所有的可能性。我认为这些例子中唯一由PEP8控制的部分是冒号周围的间距。前零后一。
d = \
   {
   'a' : 'b',
   'c' : 'd'
   }
   my_dictionary = {1: 'thing_one',
                    2: 'thing_two',
                    ...
                    n: 'thing_n'}