2009-12-16 80 views
1

假设我有这样的函数签名:调用这样的函数会被认为是不好的做法吗?

def foo(a=True, b=True, c=True, d=True, e=True): 

我已经决定这将是简洁的方式来调用这个函数,考虑到所有传入的参数应该是False

foo(*5*[False]) 
foo(*[False]*5) 

但直觉告诉我,将是不好的Python风格。你怎么看?

回答

9

如果很难阅读,这是不好的风格。

请记住,代码被读取很多比书面更频繁。

+0

呀,一开始我以为是不是很难看懂,但后来我又想起。谢谢! – guinaps 2009-12-17 15:33:01

1

您的代码应该自行解释并易于阅读。该Style Guide for Python给出了这样的例子,这应有助于回答你的问题:

使用'.startswith()和'.endswith() 而不是字符串的切片检查 前缀或后缀。

startswith()和endswith()是 更清晰并且更不容易出错。对于

例如:

Yes: if foo.startswith('bar'): 

    No: if foo[:3] == 'bar': 
4

我喜欢下面的80-20规则默认值。如果一个函数有一个参数的默认值,我选择使用不同的值,我需要做的是明显,在通话,因为这是一条重要信息。

如果你真的要“违反”五个默认参数,我会在调用中明确表明,以便让读者清楚。即,我会按名称明确列出每个参数并指出错误。

尽管您编写的代码应该可以工作,但它会让人分心,而且有人会专注于弄清楚你到底在做什么,而不是意识到重要的一点 - 因为你没有采取任何行动的默认值。这不是保存(电子)树木的地方。

相关问题