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