【问题标题】:Indentation of closing parenthesis右括号的缩进
【发布时间】:2014-07-22 01:10:17
【问题描述】:

注意:不要相信原始问题中的任何内容都是正确的,请到底部进行更新。


原始问题

我相信 PEP8 风格指南说两者都

some_kind_of_list = [
    1, 2, 3,
    4, 5, 6
    ]

def function_that_takes_long_arguments(
    long_argument_1,
    long_argument_2
    ):
    return long_argument_1

some_kind_of_list = [
    1, 2, 3,
    4, 5, 6
]

def function_that_takes_long_arguments(
    long_argument_1,
    long_argument_2
):
    return long_argument_1

是可以接受的,但使用其中一个是否有意义,例如,如果我以后转向 C++?


更新

为了说明问题,函数定义的常用样式是:

def function_that_takes_long_arguments(
        long_argument_1,
        long_argument_2):
    pass  # Note the extra indentation in the 2 lines above

# or

def function_that_takes_long_arguments(long_argument_1,
                                       long_argument_2):
    pass

而对于函数调用它是:

function_that_takes_long_arguments(
    long_argument_1,
    long_argument_2
)

# or

function_that_takes_long_arguments(
    long_argument_1,
    long_argument_2)

# or

function_that_takes_long_arguments(long_argument_1,
                                   long_argument_2)

【问题讨论】:

  • 尽量不要为此失眠。做任何对你来说更清晰的事情。
  • https://www.python.org/dev/peps/pep-0008/#code-lay-out 中,我没有在单独的行中找到用于函数调用的尾括号/右括号。

标签: python coding-style pep8


【解决方案1】:

我并不特别喜欢这种风格,我只是检查了一下,它不在 PEP 8 中,并且它可能会干扰任何给定 IDE 折叠代码块的能力(它与我在工作中用于 Python 的那个一样) :

def function_that_takes_long_arguments(
    long_argument_1,
    long_argument_2
):
    return long_argument_1

我宁愿你避免它并改为执行以下操作:

def function_that_takes_long_arguments(
  long_argument_1,
  long_argument_2):
    return long_argument_1

def function_that_takes_long_arguments(long_argument_1,
                                       long_argument_2):
    return long_argument_1

不过,无论哪种方式,列表样式都可能很好。

【讨论】:

    【解决方案2】:

    pep8python 风格指南检查器认为这两个 sn-ps 都不可接受。

    第一个选项:

    $ pep8 test_pep.py 
    test_pep.py:10:5: E125 continuation line with same indent as next logical line
    

    第二个选项(无警告):

    $ pep8 test_pep.py 
    $
    

    如您所见,对于列表,两者都可以使用。但是对于函数,第二种方法是首选,因为在第一个 sn-p 中,函数体缩进为前一行,这对可读性产生了负面影响。

    【讨论】:

      【解决方案3】:

      我通常会使用

      some_kind_of_list = [
          1, 2, 3,
          4, 5, 6,
      ]
      
      def function_that_takes_long_arguments(
          long_argument_1,
          long_argument_2,
      ):
          return long_argument_1
      

      这样缩进就可以区分了。在最后一个参数的末尾也有一个逗号可以在以后添加新的参数而不更改其他行,这对于 git-blaming 目的来说通常是一件好事,并且使less clutter in diffs

      【讨论】:

        猜你喜欢
        • 2015-04-23
        • 1970-01-01
        • 2016-05-21
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-27
        相关资源
        最近更新 更多