假设我有这个功能签名:
def foo(a=True, b=True, c=True, d=True, e=True):
我已经决定调用这个函数会有简洁的方法,因为所有传递的参数应该是False
:
foo(*5*[False])
foo(*[False]*5)
但有些东西告诉我那将是糟糕的Python风格。你觉得怎么样?
答案 0 :(得分:9)
如果难以阅读,那就是糟糕的风格。
请记住,代码比读取更多。
答案 1 :(得分:4)
我喜欢使用默认值遵循80-20规则。如果函数具有参数的默认值并且我选择使用不同的值,我需要在调用中明确这一点,因为这是一个重要的信息。
如果您实际上正在“违反”五个默认参数,我会在电话中明确表示,以便向读者说明。即,我会按名称明确列出每个参数,并指出错误。
虽然你写的代码应该有用,但这会分散注意力,有人会集中精力搞清楚你到底在做什么,而不是意识到重要的一点 - 你正在做一个非常特别的电话,因为你没有接受任何默认值。这不是保存(电子)树木的地方。
答案 2 :(得分:1)
您的代码应该自行解释并且易于阅读。 Style Guide for Python给出了这个示例,它可以帮助回答您的问题:
使用''。startswith()和''。endswith() 而不是字符串切片来检查 前缀或后缀。
startswith()和endswith()是 更清洁,更不容易出错。对于
示例:
Yes: if foo.startswith('bar'): No: if foo[:3] == 'bar':