0

私は次のことを何度も行う必要があります:

value1 = kwargs.get('par1')
if value1 is not None: value1 = int(value1)

一致する場合にのみ、フィルター(この場合)を介して返された値を直接渡すことは可能ですか?.getint

もちろん、このための関数を実装することはできますが、もっとPython的な方法があるかどうかを知りたいと思いました。

4

2 に答える 2

3

拡張することで独自の辞書を実装することもできます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'])
于 2013-02-15T08:26:04.503 に答える
1

あなたがそこを意味すると仮定するとif value1 is not None

value1 = int(kwargs['par1']) if 'par1' in kwargs else None
于 2013-02-15T08:21:32.003 に答える