如何格式化符合 PEP8 的长断言语句?请忽略我的例子的人为性质。
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), 'some_param_name must be an instance of SomeClassName, silly goose!'
不能将它包装在括号中,因为这会改变 assert 语句的行为,因为它是关键字,而不是内置函数。
ERR_MESSAGE_01 = '''
Some really long error message
'''
assert condition(a,b), ERR_MESSAGE_01
我是怎么做的……我认为这很好……
值得注意的是,可以用括号括起来,只是不是按照您的想法。
assert isinstance(some_param_name,
SomeClassName), ('some_param_name must be an instance of '
'SomeClassName, silly goose!')
但是,我不认为它特别具有可读性。在某些情况下,它可能是正确的选择。
这在最大行长度部分末尾的 pep8 中进行了描述。
反斜杠有时可能仍然合适。例如,[...] 另一个这样的情况是断言语句。
所以 pep8 的建议是像 mgilsons 的第一个例子那样做,例如:
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), \
'some_param_name must be an instance of SomeClassName, silly goose!'
def afunc(some_param_name):
assert (isinstance(some_param_name, SomeClassName)
), 'some_param_name must be an instance of SomeClassName, silly goose!'
这为您提供了 PEP 8 推荐的括号中隐含的行延续,而不会破坏断言行为。
或者:
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), (
'some_param_name must be an instance of SomeClassName, silly goose!')