1

私はこのような機能を持っています:

def hexify_string(aString):
    #code for string2hexa conversion

...そして、1つ以上の(数量が定義されていない)パラメーターを受け入れる関数が必要であり、パラメーターの合計の16進表現を返します。

def hexify(a,b...n):
    #map hexify_string to all the parameters, and return the sum of them

* args / ** kwarsを使用してこれを行う方法はありますか?

4

2 に答える 2

2

これは、あなたの望むことですか?任意の数の引数を収集します。これらはすべて文字列である必要があります。hexify_string()整数を返す各文字列を渡します。整数を合計し、合計を返します。

def hexify(*lst):
    n = sum(hexify_string(s) for s in lst)
    return n

引数を収集したいときは、それらをすべて同じように扱いたいのですが、いくつになるかわからないので、まさにその*args構文が意図されていたものです。これはその完璧なユースケースです。

**kwargs引数を収集しname=valueますが、ここではそれらのいずれも必要ありません。

于 2013-02-02T00:29:15.400 に答える
2

*argsキーワード以外のすべてのパラメーターを受け取り、それらをリストに変換します。リストの各要素にマップhexify_stringしてから、リスト内のすべての要素の合計を返すことができます。

def hexify(*args);
    return sum(map(hexify_string, args)

hexify_stringこれは、関数が文字列ではなく16進値を返すことを前提としています。

于 2013-02-02T00:30:40.150 に答える