如何格式化符合PEP8的python断言语句?

sta*_*onk 35 python assert pep8

如何格式化符合PEP8的长断言语句?请忽略我的例子的人为性质.

def afunc(some_param_name):
    assert isinstance(some_param_name, SomeClassName), 'some_param_name must be an instance of SomeClassName, silly goose!'
Run Code Online (Sandbox Code Playgroud)

无法将其包装在括号中,因为它会更改assert语句的行为,因为它是关键字,而不是内置函数.

mgi*_*son 54

重要的是要记住,PEP8只是一个指导原则,甚至指出有时应该打破规则.

但最重要的是:知道何时不一致 - 有时风格指南不适用.

考虑到这一点,我可能会用旧样式行继续写这个:

def afunc(some_param_name):
    assert isinstance(some_param_name, SomeClassName), \ 
           'some_param_name must be an instance of SomeClassName, silly goose!'
Run Code Online (Sandbox Code Playgroud)

如果这不适合你(或你的短信),你可以随时做:

def afunc(some_param_name):
    assert isinstance(some_param_name, SomeClassName), ( 
           'some_param_name must be an instance of SomeClassName, silly goose!')
Run Code Online (Sandbox Code Playgroud)

甚至:

def afunc(some_param_name):
    assert isinstance(some_param_name, SomeClassName), ( 
           'some_param_name must be an instance of SomeClassName, '
           'silly goose!')
Run Code Online (Sandbox Code Playgroud)


Jor*_*ley 5

ERR_MESSAGE_01 = '''
Some really long error message
'''

assert condition(a,b), ERR_MESSAGE_01
Run Code Online (Sandbox Code Playgroud)

我是怎么做的......而且我觉得这很合适..

  • 当帖子谈论PEP-8合规性时,`CAPS_WITH_UNDERSCORES`名称没有帮助. (5认同)
  • 常量:常量通常在模块级别定义,并以全部大写字母书写,下划线分隔单词.示例包括MAX_OVERFLOW和TOTAL. (5认同)

Gar*_*tty 5

值得注意的是,可以用括号括起来,只是不是你想的那样。

assert isinstance(some_param_name, 
                  SomeClassName), ('some_param_name must be an instance of '
                                   'SomeClassName, silly goose!')
Run Code Online (Sandbox Code Playgroud)

然而,我不会认为它特别可读。在某些情况下,这可能是正确的选择。