我的函數調用幾層,身邊掠過的關鍵字參數的普通詞典:Python的關鍵字參數
def func1(**qwargs):
func2(**qwargs)
func3(**qwargs)
我想在一些後續的函數調用提供一些默認參數,這樣的事情:
def func1(**qwargs):
func2(arg = qwargs.get("arg", default), **qwargs)
func3(**qwargs)
這種方法的問題是,如果arg是內qwargs,一個TypeError引發與「爲關鍵字參數有多個值」。
我不想將qwargs [「arg」]設置爲默認值,因爲func3無需授權即可獲取此參數。我可以製作一個qwargs的copy.copy,並在副本中設置「arg」,但qwargs可能有大數據結構,我不想複製它們(也許copy.copy不會,只有copy.deepcopy ?)。
什麼是pythonic在這裏做什麼?
'qwargs'聽起來像數據和'func *'聽起來像方法。你有沒有想過把這兩個包裝成一個班級?如果你這樣做,那麼'func2'的簽名可能被簡化爲'func2(self,arg = default)'...... – unutbu 2010-04-30 15:40:08