2011-07-21 70 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

**非常適合它的設計目的:將參數轉發給其他功能。你絕對可以做壞事,這會降低你的代碼的可讀性,但它本身並不被認爲是不好的做法。