[Python-de] Datumseingabe testen

Rainer Fischbach fischbach at ecs-gmbh.de
Wed Aug 28 11:29:04 EDT 2002


At 21:09 27.08.2002 +0200, you wrote:
>Hallo,
...
>
>> 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
>
Der Gruselfaktor von Code ist auch eine Funktion des Betrachters. Ich sagte
ja ausdrücklich "Wenn man ein Liebhaber von Einzeilern ist, ..." In meinem
Code ist jedoch überhaupt nichts Undurchsichtiges. Wenn man gelernt hat,
applikative Programme zu lesen, braucht man dafür auch keine besonderen
Entschlüsselungskünste. Schöner wäre das sicher mit einem in Python leider
fehlenden Closure-Konstrukt, das etwas syntactical sugure für das Lambda
bietet:

	valid_date (y, m, d) where d, m, y = map (int, datum.split ('.') 
	
Imperativer Code mit seinen überflüssigen Sequentialisierungen und
Variablen (die meist einen viel zu großen Scope haben und deshalb
Fehlerquellen sind) ist per se keinesfalls verständlicher oder gar sicherer!

sl, Rainer

     
    Rainer Fischbach
______________________________________________________

    ECS
    Engineering Consulting & Solutions GmbH
    Muehlstrasse 3
    D-92318  Neumarkt

    Phone:               +49 (0)9181 - 4764-84
    Fax:                 +49 (0)9181 - 4764-50
    Mobile:              +49 (0)171  - 41 41 570
    e-mail:              fischbach at ecs-gmbh.de
    WWW:                 http://www.ecs-gmbh.de
______________________________________________________






More information about the Python-de mailing list