[Python-de] Typ-Prüfung

Fritz Cizmarov fritz at sol.at
Mit Sep 17 16:35:59 CEST 2003


Am Wed, 17 Sep 2003 13:55:39 +0200
Schrieb "Lutz Schröer" <latz at elektroelch.de>:

> Hai,

Hallo Lutz, 

> nachdem Rainer mich einigermaßen überzeugt hat, das man Ausnahmen 
> wirklich nur in Ausnahmen nutzen sollte :), stellt sich mir jetzt die 
> Frage, wie ich folgendes eigentlich einfache Problem auch einfach 
> lösen kann:
> 
> Ich habe eine Funktion, der ich entweder einen einzelnen String oder 
> eine Liste mit Strings übergeben möchte. Um anschliessend einheitlich 
> mit einer Liste weiterarbeiten zu können, habe ich mir folgendes 
> Konstrukt ausgedacht:
> 
> def myFunc(s):
>   if isString(s):
>     s = [s]
> 
> und isString sieht so aus:
> 
> def isString(s):
>   try: s += ' '
>   except: return 0
>   else: return 1
> 
> Wie kann ich das auch ohne Exception lösen? Im Kochbuch wird auch 
> folgende Variante angeboten:
> 
> def isString(s):
>   return isinstance(s, type(''))
> 

ich würde das so machen

def myFunc(s):
    if type(s) is not type([]):
	s = [s]

> Das funktioniert aber erst ab Python 2.0 und auch nicht mit Unicode. 
> Da es sich um ein Modul handelt, das ich veröffentlichen will, sollte 
> es möglichst universell, am besten Version-1.5- kompatibel und kein 
> Code-Monster sein (ich will's wenigstens selber noch verstehen).
 
geht auch mit 1.5 und Unicode ist auch kein problem

> Wobei sich mir auch gerade die Frage stellt, ob man beim Erstellen 
> von Modulen noch auf die Version 1.5 Rücksicht nehmen sollte (und wie 
> lange noch) oder eine andere Version (welche?) als allgemein vorrätig 
> und benutzt vorraussetzen kann?
 
ich denke mal 2.1 kann man heutzutage voraussetzen. Neue Projekte, just
for fun, mache ich auch nur noch für 2.3


Gruß

Fritz