7

辞書をkwusingに変換できますが、code_generatorのキーワード引数を持つ文字列が必要なため、**kw必要kwstr(kw)ない場合は、str(dict)

合格すれば

obj.method(name='name', test='test', relation = [('id','=',1)])

次のような文字列を返す関数が必要です

"name='name', test='test', relation = [('id','=',1)]"
4

2 に答える 2

12

同じ構文を使用して、任意のキーワード引数を受け入れます。

Python 2:

def somestring(**kwargs):
  return ', '.join('%s=%r' % x for x in kwargs.iteritems())

Python 3:

def somestring(**kwargs):
    return ", ".join(f"{key}={value}" for key, value in kwargs.items())

dictは任意の順序であるため、結果の文字列は渡された引数とは異なる順序になる可能性があることに注意してください。

于 2010-05-10T12:09:13.217 に答える
1

上の答えはPython2.7.16では正しく実行できません。

def somestring(**kwargs):
    return ''.join([('%s=%s' % x) for x in kwargs.iteritems()]) 


#A full example:

def RunCommandAndEnsureZero(*args, **kwargs):
    retCode = RunCommand(*args, **kwargs)
    if retCode != 0:
        kwargsString = ''.join([('%s=%s' % x) for x in kwargs.iteritems()])
        raise Exception("error command: \"%s %s\"" % (''.join(args), kwargsString))
于 2019-12-21T03:06:09.193 に答える