如何格式化一个符合PEP8标准的长断言语句?请忽略我例子的牵强性。
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), 'some_param_name must be an instance of SomeClassName, silly goose!'
无法使用括号将其括起来,因为这会改变assert语句的行为,因为它是一个关键字而不是内置函数。
考虑到这一点,我可能会使用旧的行连续写法来编写此代码。但最重要的是:要知道何时不一致 - 有时样式指南并不适用。
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!')
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), (
'some_param_name must be an instance of SomeClassName, '
'silly goose!')
def
比function
更短。当然,还有比这更具说服力的原因。;-) - AyaERR_MESSAGE_01 = '''
Some really long error message
'''
assert condition(a,b), ERR_MESSAGE_01
CAPS_WITH_UNDERSCORES
的命名方式并没有起到帮助作用。 - Gareth LattyCONDITION()
是一个函数,不是一个常量。 - Gareth Lattyassert isinstance(some_param_name,
SomeClassName), ('some_param_name must be an instance of '
'SomeClassName, silly goose!')
我不会说这种写法非常易读,但在某些情况下,它可能是正确的选择。
因此,Pep8的建议是像mgilson的第一个例子那样做,例如:反斜杠有时仍然是适当的。例如,[...] 另一个这样的情况是使用assert语句。
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!'
def afunc(some_param_name):
assert isinstance(some_param_name, SomeClassName), (
'some_param_name must be an instance of SomeClassName, silly goose!')
assert
应该只用于 调试 目的,任何其他用途都是对assert
功能的滥用。当使用-O
选项运行 Python 时,所有assert
也会被删除。 - Wessie