辞書をkw
usingに変換できますが、code_generatorのキーワード引数を持つ文字列が必要なため、**kw
必要kw
がstr(kw)
ない場合は、str(dict)
合格すれば
obj.method(name='name', test='test', relation = [('id','=',1)])
次のような文字列を返す関数が必要です
"name='name', test='test', relation = [('id','=',1)]"
辞書をkw
usingに変換できますが、code_generatorのキーワード引数を持つ文字列が必要なため、**kw
必要kw
がstr(kw)
ない場合は、str(dict)
合格すれば
obj.method(name='name', test='test', relation = [('id','=',1)])
次のような文字列を返す関数が必要です
"name='name', test='test', relation = [('id','=',1)]"
同じ構文を使用して、任意のキーワード引数を受け入れます。
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は任意の順序であるため、結果の文字列は渡された引数とは異なる順序になる可能性があることに注意してください。
上の答えは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))