komplette syntax

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
The_ride
User
Beiträge: 16
Registriert: Sonntag 23. April 2006, 14:33

komplette syntax

Beitragvon The_ride » Samstag 28. Oktober 2006, 11:41

hi noch mal wo finde ich die komplete syntax von python ??
mit erklärung (wens geht in deutsch) ????

cya The_ride
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: komplette syntax

Beitragvon Leonidas » Samstag 28. Oktober 2006, 11:45

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Bernd Jonsson
User
Beiträge: 9
Registriert: Sonntag 22. Oktober 2006, 21:05

Beitragvon Bernd Jonsson » Samstag 28. Oktober 2006, 19:51

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
BlackJack

Beitragvon BlackJack » Samstag 28. Oktober 2006, 20:10

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.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Samstag 28. Oktober 2006, 20:33

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?
BlackJack

Beitragvon BlackJack » Samstag 28. Oktober 2006, 21:25

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'
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Samstag 28. Oktober 2006, 23:49

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"

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder