[Python-de] Modul von anderswo laden?

Det ddet at gmx.de
Sat Mar 9 12:02:50 EST 2002


Hallo Matthias,

On Fri, Mar 08, 2002 at 04:05:46PM +0100, Matthias Urlichs wrote:
> Det:
> > Verstehen was es macht und ueber sprachadaequates Design nachdenken.
> > 
> Das ist in diesem Fall relativ simpel. Unter Perl mache ich:
> 
> use Loader qw(diese_funktion)

No,no,  ich meinte das abstrakter auf Anwendungsebene.
Verstehen, was die _Anwendung_ macht und dann ueber 
sprachadaequate Loesung des _Anwendungsproblems_ nachdenken.
Sonst waere Mailman wohl auch nur eine Umschreibung des
Majordomo. Oft ergeben sich naemlich in der Zielumgebung ganz
neue Moeglichkeiten, mit dem Problemraum umzugehen.

> Das wird in Python einfacher, weil ein "import", das ich in eine Funktion
> reinschreibe, auch erst zur Laufzeit der Funktion aufgerufen wird. Es ist
> aber insofern schwieriger, als ein "import diese_funktion" normalerweise
> eben bewirkt, dass diese_funktion ein Modul und keine Funktion ist, und
> genau das will ich nicht haben.

Hm. Vielleicht habe ich das noch nicht ganz begriffen.
Aber ist das nicht durch  "from diese import funktion" abgebildet ?
(Auch wenn die physikalische Modulbildung jetzt anders aussieht,
da 'diese' kein Verzeichnis und 'funktion' nicht ein einzelnes file
ist).

> 
> > 2.) Ist es gerade aus Performance immer besser, nahe an der
> > Zielsprache zu bleiben.
> > 
> Ich habe für dieses Perl-Programm vor Urzeiten eine Abstraktion für
> Datenbankzugriff geschrieben. Das Teil sieht inzwischen beim Aufruf so
> aus:
> 
> DoSelect { 
> 	my($bla,$fasel)=@_;
> 	... mehrere Zeilen Code ...
> 	... in denen ebenfalls SELECT oder UPDATE stehen könnte ...
> 	... ohne dass die Datenbank sich blockiert bitte ...
> } "select bla,fasel ... ";
> 
> und allein das mit den mehreren Zeilen zwischen der Zuweisung und dem
> SELECT-Befehl macht das Teil unwartbar. (Den String zuerst schreiben geht
> auch, aber dann braucht es einen Haufen zusätzlicher Syntax:
> 'DoSelect("Bla",sub {...});'  )
> 
> Unter Python sieht das viel schöner aus:
> 
> for bla,fasel in Db.DoSelect("select bla,fasel ..."):
> 	... schonmal eine Zeile Code weniger ...
> 
> Das sieht besser aus, ist schneller, und ich kriege automatisch einen
> Fehler gemeldet, wenn die Zahl der Variablen nicht stimmt.
> 
> (Und ja, das Ding IST ein Generator.)
> 

[Anekdoten-Section]
> Meine persönliche Horror-Story ist immer noch die von einem, der eine
> Integer-Variable in eine Fliesskommazahl umwandelte, indem er sie mit
> sprintf() in einen Puffer geschrieben, dann ".0" angehängt, und mit
> sscanf() wieder eingelesen hat ... und solche Praktiken zogen sich
> komplett durch den Code.

Mal ehrlich. Zeugt doch irgendwo von Genialitaet.
Wer kaeme auf sowas ????

> Die ursprüngliche Programmiersprache?
> COBOL.

q.e.zuerwarten

Det



More information about the Python-de mailing list