On 02.Aug 2005 - 10:09:38, Frank Küster wrote: > Thorsten Haude <[EMAIL PROTECTED]> wrote: > >>import os > >>list = os.listdir('/tmp') > >>for filename in list: > >> print filename, > >> if os.path.isdir(filename): > >> print "is a directory" > >> else: > >> print "is a regular file" > > > > Wenn ich mal raten darf, was Python macht, sieht das in Ruby so aus: > > > > dir = Dir.new('/tmp') > > dir.each { |filename| > > print filename > > if filename.stat.directory? > > print "is a directory" > > else > > print "is a regular file" > > end > > } > > > Naja, ich kenne keine der beiden Sprachen, finde aber trotzdem gleich
Ich kenne Ruby nicht aber,... > - Python verwendet die in tausend Sprachen geläufige Syntax "for <name> > in <liste> <separator> <body>", während Ruby offenbar sowas macht: > "<Kommando_das_liste_produziert> { | <name> | <body> }, das finde ich > schwer lesbar (vor allem wenn ich mir vorstelle wie ich das dann von > while, until, etc. unterscheiden soll). Ich finds schonmal gut das man sowohl in Python als auch in Ruby (offensichtlich) einfach so ueber listen iterieren kann, ohne dabei selbst mitzaehlen zu muessen ala for (int i=0; i<laenge; ++i)... Das mit den |<var>| ist ja im Prinzip nur ne Eigenart der Sprache, ebenso gibts bei Python ein paar Dinge die unleserlich sind, z.B. lambda-Funktionen (f = lambda x: x+4, erzeugt eine Funktion (ohne Namen) und bindet sie an f, jetzt kriegt man mit f(0) 4, f(1) 5 usw. "raus") oder auch list comprehension: [3*x for x in list if x>3] liefert mit list=[1,2,3,4,5,6] als Ergebnis eine Liste [12,15,18]... > - Python verwendet zum Erstellen der Liste ein Kommando mit intuitiv > verständlichem Namen (os.listdir('<directory>'), Ruby dagegen offenbar > ein Suffix .each hinter dem Namen der Variable, die auf das > Verzeichnis zeigt. Das finde ich schon in diesem Fall ungewohnt, und > wenn ich mir vorstelle, dass das Verzeichnis nicht in "dir" steckt, > sondern in "newplace" oder "wget_target" oder so, wird es noch > schwerer. Zumal dann, wenn .each auch auf anderen Dingen als > Verzeichnissen agieren kann (z.B. URLs oder Datenbank-dingsens). Ich denke da verstehst du was falsch. Ruby und Python sind sich da IMHO ziemlich aehnlich. In Python kann ich mit for <x> in <y> ueber jedes Objekt iterieren das sich wie eine Liste verhaelt. Das koennte auch eine Klasse sein, die einfach nur die passenden funktionen implementiert (frag mich nicht welche das sind, weiss ich ausm Kopf nicht). Ruby hat statt dieser for-Geschichte einfach eine Funktion "each" fuer entsprechende Objekte die die Iteration ueber jedes Element der Liste durchfuehrt. Ist also im Prinzip auch nichts anderes als ein Unterschied im Dialekt. > - und schließlich finde ich das Fragezeichen hinter .stat.directory > (oder steht es hinter if <test>?) irgendwie albern Find ich persoenlich eher nicht, aber auch da: Python braucht nen ":", Ruby ebend ein "?". Andreas -- Be free and open and breezy! Enjoy! Things won't get any better so get used to it. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)