Seite 1 von 1

komplette syntax

Verfasst: Samstag 28. Oktober 2006, 11:41
von The_ride
hi noch mal wo finde ich die komplete syntax von python ??
mit erklärung (wens geht in deutsch) ????

cya The_ride

Re: komplette syntax

Verfasst: Samstag 28. Oktober 2006, 11:45
von Leonidas
The_ride hat geschrieben:wo finde ich die komplete syntax von python ??
Die gibts hier, unter dem Punkt "Die Syntax von Python", in EBNF-Schreibweise.

Aber warscheinlich wirst du damit nicht viel anfangen können (kaum jemand braucht die Definition der Python-Syntax zum Programmieren von Python), daher würde ich dir raten, dass du einfach Python so lernst. DIe Systax lernst du nebenbei.

Verfasst: Samstag 28. Oktober 2006, 19:51
von Bernd Jonsson
Ich finde den Blick auf die Syntax einer Sprache interessant. Leider ist die Python-Syntax nicht so einfach (kurz) wie etwa die von Pascal oder Algol60 und wirkt dadurch verwirrend.

Auch findet man (für mich) überraschende Dinge, z.B.
das 'else' in einer for-Schleife, es wird in nur wenigen Einführungen erklärt.
dass eine Parameterliste mit einem Komma enden darf:
def fun(a, b,): oder x = fkt(y, z,)
"was soll das wohl?" Im print-Statement ist die Sache klar.

Gruß Bernd

Verfasst: Samstag 28. Oktober 2006, 20:10
von BlackJack
Bernd Jonsson hat geschrieben:Auch findet man (für mich) überraschende Dinge, z.B. das 'else' in einer for-Schleife, es wird in nur wenigen Einführungen erklärt.
Das ist ja auch absolut furchtbar. Irgendwie hätte ich bei einem Wort, das man mit "sonst" oder "andernfalls" übersetzt erwartet, das dieser Zweig ausgeführt wird, wenn der Schleifenrumpf *nicht* ausgeführt wurde. Dafür würden mir auch Anwendungsfälle einfallen. Der ``else``-Zweig wird aber *immer* ausgeführt, es sei denn die Schleife wird mit ``break`` verlassen. Was sich Guido dabei gedacht hat...
dass eine Parameterliste mit einem Komma enden darf:
def fun(a, b,): oder x = fkt(y, z,)
"was soll das wohl?"
Einfach Kosistenz würde ich sagen. Das kann man auch bei literalen Tupeln, Listen, und Dictionaries so machen. Letztendlich ist das ja ein Tupel mit Argumenten.

Verfasst: Samstag 28. Oktober 2006, 20:33
von Joghurt
BlackJack hat geschrieben:Was sich Guido dabei gedacht hat...
Er wollte wohl kein weiteres Keyword einführen. Welches Keyword hättest du denn stattdessen genommen?

Verfasst: Samstag 28. Oktober 2006, 21:25
von BlackJack
Ich finde die Semantik komisch. Für diese implemetierte Semantik fällt mir kein gutes Schlüsselword ein. Und auch so auf Anhieb keine Anwendungsfälle. Da bin ich wohl nicht der Einzige, weil man es selten in der freien Wildbahn sieht.

Für die Semantik die ich in meiner Naivität angenommen hätte, fielen mir dagegen schon Anwendungsfälle ein, also eine "Sonderbehandlung" wenn eine Schleife gar nicht ausgeführt wurde:

Code: Alles auswählen

for item in iterable:
    do_something(item)
    print 'processed %s' item
else:
    print 'nothing to process'
Das würde ich irgendwie "natürlich" finden und es würde zum Beispiel den Fall wenn `iterable` ein Iterator ist, wesentlich vereinfachen. Weil man sonst irgendwie erkennen müsste ob der was enthalten hat, oder nicht, man bräuchte also ein extra Flag z.B. so:

Code: Alles auswählen

processed = False
for item in iterable:
    do_something(item)
    print 'processed %s' item
    processed = True

if not processed:
   print 'nothing to process'

Verfasst: Samstag 28. Oktober 2006, 23:49
von Joghurt
Ich bin auch kein Fan des for-else, so wie es implementiert ist.
Gedacht ist dies wohl für Fälle wie diesen:

Code: Alles auswählen

from math import sqrt
zahl = 1234567891
for t in xrange(2,sqrt(zahl)):
  if zahl%t == 0:
    print zahl,"ist ein Vielfaches von",t
    break
else:
  print zahl, "ist prim"