2016-06-25 6 views
1

私は、それに渡される非kwargsに基づいてkwargsの 'デフォルト'値を導出する関数を作りたいと思います。例:この例ではPython kwargs他のargsから値を取って

numbers= [1,2,3,4,5] 

def someMath(lst, divideBy = len(lst)): 
    return sum(lst)/divideBy 

、私は、関数のデフォルトの戻り値は、リストの長さで割っ渡された番号リストの合計になるようにしたいと思います。

someMath(numbers, divideBy=5) # returns 5 

は、これを可能とする方法です:

someMath(numbers) # returns 3 

は、しかし、私はまだオプションがdivideBy値が何であるかを変更したいですか?

+0

は重複 – RSHAP

+0

「Python関数の動的デフォルト引数」間違いうんまさに – RSHAP

答えて

1

私はPythonプログラマは通常、これを書くような方法は、次の操作を実行することだと思う:

def someMath(lst, divideBy=None): 
    if divideBy is None: 
     return sum(lst)/len(lst) 
    return sum(lst)/divideBy 
+0

おかげで、これは理にかなって、私の質問に答える - 私の実際のプログラムにはもう少し多くの議論がありますので、kwargなら '' 'を書くことなく実行できるかどうか疑問に思っています:' '' ...それぞれのために...しかし多分それだけではない – RSHAP

+0

まあ、私の頭では、 'filter(bool ...')とあなたの引数の文字列値を使ってもっと複雑なことをすることができますが、単純に値が指定されているかどうかを1つずつテストする嘘つきかどうか – erewok

+0

いや、そうは必要ありません。あなたの答えは正解です。それができるようになるとすぐにマークします – RSHAP

関連する問題