anydbmっていうdbm系の汎用インターフェースがあり、どうやって抽象化してんのかな?とソースコードを読んでみた。
_names = ['dbhash', 'gdbm', 'dbm', 'dumbdbm'] _defaultmod = None for _name in _names: try: _mod = __import__(_name) except ImportError: continue if not _defaultmod: _defaultmod = _mod _errors.append(_mod.error)
__import__組み込み関数を使って_namesリストにあるモジュールがインポート出来るか試していって最初にインポートできたモジュールを返す