2011-07-21 73 views
7

我正在使用Python 2.7开发我的第一个项目。我们来自Java背景,我们的第一本能是以Java风格的方式编写Python代码。但是现在我们正在努力尽可能地适应。到目前为止,我们正在使用pylint来调整我们的代码。python造型**问题

现在我一直遇到pylint的情况。每次我使用类似**data来传递值的方法,我得到一个pylint关于使用***的警告。现在我的问题是:是否使用**编写python代码的不好的样式?有没有使用这种标准的替代品?

问候, 波格丹

+1

你能否贴一些代码示例? –

回答

4

**可以引入一些更棘手的错误,因为它会接受任何东西。通常情况下,您希望代码在调用错误时中断。这里有一个例子:

def dostuff(**kwargs): 
force = 3 
if kwargs.get('reallyhard', False): 
    force += 5 
# and so on 

# Now you need luck to find this bug ... 
dostuff(fancy=True, funky=False, realyhard=True) 

你不应该使用**只是因为你懒得打出来的参数名。但这并非总是可行,所以也有合法的用途。

+0

感谢所有的投入。否则就很难做我们需要的东西。例如,我们有一个lauch方法,它接收一个适配器实例,通过内省创建,每个接口都有一个不同的接口。因此,所需的输入数据因适配器而异。 – Bogdan

2

这几乎是不可能用静态分析来验证通过**产生的参数都是有效的,但如果它是唯一适当的机制,他们通过各种手段都使用它。

2

**非常适合它的设计目的:将参数转发给其他功能。你绝对可以做坏事,这会降低你的代码的可读性,但它本身并不被认为是不好的做法。