2017-08-21 6 views
1

次のコードを書くためのより良い方法がありますか?私は何をしたい機能が「A」としてキー引数を渡す場合、それはキーワード引数で指定された「」場合は取得するだけでkwargsキーが渡された場合の文字列の追加方法

def testFunc(**kwargs): 
    b = '' if not 'a' in kwargs else '//{}'.format(kwargs['a']) 
    print(b) 
testFunc() 
testFunc(a='this') 
+0

'a'パラメータだけに興味があるのなら、正確にkwargsを受け入れますか? 'a'を通常のパラメータにできない理由は何ですか?いくつかのコンテキストが役に立ちます。 –

+0

それは単なるコードです、私は実際には私の関数でもっと論理を持っています – jacobcan118

+0

'...' kwargs' else ... 'ではないなら、ここで改善するものはありません。 –

答えて

-1

使用dict.get()空の文字列を渡し、他の評価にいくつかの文字列を追加しています。そして、それは存在していないですが、デフォルトの戻り値は''の場合:

b = kwargs.get('a', '') 
if b: 
    b = '//{}'.format(b) 

最初の割り当ては、辞書から'a'を取得し、bに割り当てます。次にbが空でない場合('')、'//'で再フォーマットしてください。

編集:「a」がkwargsで提供されていないが空('')の場合、bも空で、「//」ではないと仮定します。現在のコードで'a'が指定されていて空の場合、b'//'になります。空の場合、または空の文字列bの両方が得られるようにaの場合は、私のバージョンを使用してください。それ以外の場合、バージョンは問題ありませんが、MartinPがコメントに入れているように... if 'a' not in kwargs else ...に変更してください。

+2

元のコードは、 'a'が提供されていない場合、' b = '//' 'ではなく' b = '' 'を生成します。 – user2357112

+0

はい、aが提供されない場合、空の文字列としてパスbが存在し、存在していればb = '//' + kwargsの変数 – jacobcan118

+1

呼び出し元が 'a = '' '。 – user2357112

関連する問題