假设我有一个装饰器,它会导致函数打印出任何异常并返回None,如果发生异常,而不是失败。假设这是一个好主意,那么首选的命名风格是什么?
A)
@ignore_exceptions
def foobar(a, b, c):
raise ValueError("This function always fails...")
b)中
@ignores_exceptions
def foobar(a, b, c):
raise ValueError("This function always fails...")
那就是:它应该a)
是一个命令(装饰者告诉函数做不同的事情),或者b)
一个描述(装饰者让程序员知道函数的一个属性)?
答案 0 :(得分:5)
我认为活动版本(ignore_exceptions
)比描述版本(ignores_exceptions
)更常用,至少在我熟悉的Python代码库中是这样。
PEP 8指南确实有naming conventions部分,但在这种情况下它没有提供太多帮助。无论如何,代码库的一致性是最重要的。
答案 1 :(得分:2)
我会说ignore_exceptions
在这里更好,只是基于我在PythonDecoratorLibrary页面中看到的内容。
其中使用的一些示例装饰器名称为countcalls
和dump_args
,与ignore_exceptions
的{{1}}更为一致。
一致性是选择其中一种的唯一原因,因为两者都清楚地说明了发生的事情。