Lutz Schröer wrote:
nachdem Rainer mich einigermaßen überzeugt hat, das man Ausnahmen wirklich nur in Ausnahmen nutzen sollte
Man sollte da nicht in Dogmatismus verfallen. In der Praxis hat es sich (auch aus Performance-Gruenden) bewaehrt, sich in diejenigen Faellen auf Exceptions zu verlassen, welche "relativ selten" auftreten. Wenn ein einfacher Vergleich als Ersatz ausreicht (oder sogar eine einfache Berechnung), dann ist deren Einsatz aber haeufig wirklich naheliegender.
Im Kochbuch wird auch folgende Variante angeboten:
def isString(s): return isinstance(s, type(''))
Das funktioniert aber erst ab Python 2.0 und auch nicht mit Unicode.
Das funktioniert problemlos auch mit Python 1.5, aber in der Tat nicht mit Unicode. Wenn du Versionsunabhaengigkeit *und* Unicode willst, dann koennte folgendes helfen: import types if hasattr(types, 'UnicodeType'): _stypes = (types.StringType, types.UnicodeType) else: _stypes = (types.StringType,) if not hasattr(__builtins__, 'True'): True = 1 False = 0 def isString(s): for t in _stypes: if isinstance(s, t): return True return False Die for-Schlaufe ist notwendig, weil isinstance() in 1.5 noch nicht mit Listen/Tupeln umgehen kann, die musst du also selber behandeln. Ich behaupte nicht, dass dies das Maximum an Eleganz ist, aber das sind Kompatibilitaetsloesungen selten. Immerhin sollte es fuer (fast ;) jeden Python-Entwickler verstaendlich sein. -schorsch -- Georg Mischler -- simulations developer -- schorsch at schorsch com +schorsch.com+ -- lighting design tools -- http://www.schorsch.com/ _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de