私は次のことを何度も行う必要があります:
value1 = kwargs.get('par1')
if value1 is not None: value1 = int(value1)
一致する場合にのみ、フィルター(この場合)を介して返された値を直接渡すことは可能ですか?.get
int
もちろん、このための関数を実装することはできますが、もっとPython的な方法があるかどうかを知りたいと思いました。
私は次のことを何度も行う必要があります:
value1 = kwargs.get('par1')
if value1 is not None: value1 = int(value1)
一致する場合にのみ、フィルター(この場合)を介して返された値を直接渡すことは可能ですか?.get
int
もちろん、このための関数を実装することはできますが、もっとPython的な方法があるかどうかを知りたいと思いました。
拡張することで独自の辞書を実装することもできますUserDict
が、ラップする必要がありkwargs
、それは少し高価です(kwargs
通常は小さいですが、それでも...)。
いつでもint()
例外を呼び出してキャッチできますが、それも遅くなります。
dict
内部型なのでモンキーパッチはできません。それ以外の場合は、新しい関数dict.getInt = getAsInt
がどこにあるかを言うことができます。getAsInt
使用することもできますint(kwargs['par1']) if par1 in kwargs else None
が、辞書を2回検索します。
これには新しい関数を使用します。
def asInt(v): return None if v is None else int(v)
value1 = asInt(kwargs['par1'])
あなたがそこを意味すると仮定するとif value1 is not None
:
value1 = int(kwargs['par1']) if 'par1' in kwargs else None