[Python-de] Datumseingabe testen

Stefan Schwarzer sschwarzer at sschwarzer.net
Tue Aug 27 22:09:39 EDT 2002


Hallo,

Rainer Fischbach wrote:
>>Ich habe aber noch ein Problem, wenn ich den Code in mein Skript einbaue.
>>
>>def hinweis():
>>   import tkMessageBox

> import in einer Funktion, die immer wieder aufgerufen wird, ist nicht
> besonders sinnvoll

jein. :-) Vermutlich wird hinweis() nur selten aufgerufen (irgendwann kennt der
Anwender das Datumsformat sicherlich ;) ), und da Python den tatsächlichen
Modul-Import nur einmal ausführt, ist das wiederholte Passieren der Import-
Anweisung auch kein Problem.

Wenn ein Modul lange zum Importieren braucht, aber wahrscheinlich nicht benötigt
wird, ist es sogar - unter dem Laufzeitaspekt jedenfalls - günstiger, die Import-
Anweisung in der betreffenden Funktion/Methode zu haben.

Dessen ungeachtet, bevorzuge ich persönlich alle Import-Anweisungen am Anfang der
Datei, sofern nicht wichtige Gründe dagegen sprechen.

> mktime erwartet ein 9-tupel, dessen Komponenten alle int-Werte sind,
> valid_date also auch drei int-Werte! (Typdeklarationen haben manchmal schon
> etwas für sich; man sollte sie im docstring machen) Du übergibst aber drei
> Strings! Wenn man ein Liebhaber von Einzeilern ist, kann man statt der fünf
> Zeilen auch knapp schreiben:
> 
> 	if (lambda (d, m, y): valid_date (y, m, d)) (map (int, datum.split ('.'))):
> 
> du kannst natürlich auch die definition von valid_date anpassen, so dass es
> die Reihenfolge Tag, Monat, Jahr erwartet und dann schreiben
> 
> 	if apply (valid_date, map (int, datum.split ('.')))
> 
> das ist etwas kürzer

*grusel* ;-) Aber auch viel schwerer lesbar.

An Python finde ich gerade schön, dass man relativ leicht gut lesbaren Code
schreiben kann. Man sollte es, sich und anderen zuliebe, auch tun. :-) Es sei denn,
man "verdient" sein Geld damit, dass man der Einzige ist, der den Code versteht. ;-)

Für ein kompliziertes Problem kann ich auch notwendigen komplexeren Code
akzeptieren, aber bei einfachen Aufgaben sollte man nicht gezwungen sein, den
Code zu "entschlüsseln".

Viele Grüße
  Stefan





More information about the Python-de mailing list