よりよく説明するために、次の単純な型チェッカー関数について考えてみましょう。
from collections import Iterable
def typecheck(obj):
return not isinstance(obj, str) and isinstance(obj, Iterable)
obj
が 以外の反復可能な型の場合、str
を返しますTrue
。ただし、がまたは反復不可能な型の場合obj
は、を返します。str
False
型チェックをより効率的に実行する方法はありますか? obj
つまり、一度タイプをチェックして a でないかどうかを確認し、もう一度str
チェックして反復可能かどうかを確認するのはちょっと冗長に思えます。
str
次のように、他のすべての反復可能な型をリストすることを考えました。
return isinstance(obj, (list, tuple, dict,...))
しかし問題は、そのアプローチでは、明示的にリストされていない他の反復可能な型が見逃されることです。
それで...もっと良いものはありますか、それとも私が関数で与えたアプローチが最も効率的ですか?