我正在使用Python 2.7開發我的第一個項目。我們來自Java背景,我們的第一本能是以Java風格的方式編寫Python代碼。但是現在我們正在努力盡可能地適應。到目前爲止,我們正在使用pylint來調整我們的代碼。python造型**問題
現在我一直遇到pylint的情況。每次我使用類似**data
來傳遞值的方法,我得到一個pylint關於使用*
或**
的警告。現在我的問題是:是否使用**
編寫python代碼的不好的樣式?有沒有使用這種標準的替代品?
問候, 波格丹
我正在使用Python 2.7開發我的第一個項目。我們來自Java背景,我們的第一本能是以Java風格的方式編寫Python代碼。但是現在我們正在努力盡可能地適應。到目前爲止,我們正在使用pylint來調整我們的代碼。python造型**問題
現在我一直遇到pylint的情況。每次我使用類似**data
來傳遞值的方法,我得到一個pylint關於使用*
或**
的警告。現在我的問題是:是否使用**
編寫python代碼的不好的樣式?有沒有使用這種標準的替代品?
問候, 波格丹
**
可以引入一些更棘手的錯誤,因爲它會接受任何東西。通常情況下,您希望代碼在調用錯誤時中斷。這裏有一個例子:
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)
你不應該使用**
只是因爲你懶得打出來的參數名。但這並非總是可行,所以也有合法的用途。
感謝所有的投入。否則就很難做我們需要的東西。例如,我們有一個lauch方法,它接收一個適配器實例,通過內省創建,每個接口都有一個不同的接口。因此,所需的輸入數據因適配器而異。 – Bogdan
這幾乎是不可能用靜態分析來驗證通過**
產生的參數都是有效的,但如果它是唯一適當的機制,他們通過各種手段都使用它。
**
非常適合它的設計目的:將參數轉發給其他功能。你絕對可以做壞事,這會降低你的代碼的可讀性,但它本身並不被認爲是不好的做法。
你能否貼一些代碼示例? –