C#和Python都允許命名參數,因此您可以編寫如下代碼:foo(bar:1)
。這很好,尤其是與可選參數結合使用時。命名參數:C#vs Python
我的問題是:C#和Python命名參數(如果有的話)之間有什麼區別?我對哪種「最好」不感興趣,但是這些差異背後是否存在差異和可能的動機。
如果有人知道與其他語言實現此功能(Ruby或Objective-C,也許)的區別,那也可能很有趣。
編輯來讓社區維基
C#和Python都允許命名參數,因此您可以編寫如下代碼:foo(bar:1)
。這很好,尤其是與可選參數結合使用時。命名參數:C#vs Python
我的問題是:C#和Python命名參數(如果有的話)之間有什麼區別?我對哪種「最好」不感興趣,但是這些差異背後是否存在差異和可能的動機。
如果有人知道與其他語言實現此功能(Ruby或Objective-C,也許)的區別,那也可能很有趣。
編輯來讓社區維基
的Python不僅可以讓你趕上未指定命名參數進一個字典,但也可以讓你解壓字典爲參數:
>>> def f(alfa, beta, gamma):
... print alfa, beta, gamma
...
>>> f(**{'alfa': 1, 'beta': 2, 'gamma': 3})
1 2 3
並將它們傳遞給流:
>>> def g(**kwargs):
... f(**kwargs)
...
>>> g(**{'alfa': 1, 'beta': 2, 'gamma': 3})
1 2 3
的Python讓你「趕」未指定命名的參數爲一個字典,這是非常方便的
>>> def f(**kw):
... print kw
...
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}
這個問題到底是什麼?我認爲如果沒有足夠的背景,這個問題可能會變得主觀...... – 2010-02-02 21:48:45