Seite 2 von 4

Re: Python Tutorials

Verfasst: Do Aug 07, 2008 11:48 am
von nufan
Was mir sehr gut gefällt ist die zwangsweise EInrückung, die die Klammerung ersetzt. Es zwingt den Programmierer zu einer sauberen Formatierung und man spart sich die Klammern für andere Dinge.
Mit den Klammern hab ich auch so meine Probleme, da sie bei der deutschen Tastatur (fürs Programmieren) schlecht platziert sind.

Also es lohnt sich, da mal reinzuschaun?

Re: Python Tutorials

Verfasst: Sa Aug 09, 2008 1:36 pm
von Xin
dani93 hat geschrieben:
Was mir sehr gut gefällt ist die zwangsweise EInrückung, die die Klammerung ersetzt. Es zwingt den Programmierer zu einer sauberen Formatierung und man spart sich die Klammern für andere Dinge.
Mit den Klammern hab ich auch so meine Probleme, da sie bei der deutschen Tastatur (fürs Programmieren) schlecht platziert sind.
Du kannst die Klammern ja wieder auf ü und + legen, bzw. ö und ä legen und dafür +, ü, ö und ä auf Alt-Gr 7, 8, 9 und 0. :->
dani93 hat geschrieben:Also es lohnt sich, da mal reinzuschaun?
Wie gesagt, es ist zu früh, ein Resümee zu ziehen, für mal eben ein paar Skripte zu machen oder schnell eine kleine Aufgabe zu erledigen, erscheint mir Python allerdings wirklich sehr gut geeignet.
Es bleibt aber eine Skriptsprache mit allen dazugehörigen Nachteilen.
Syntaktisch geht Python einen etwas anderen Weg, man muss sich einige Dinge anders angewöhnen. Angucken lohnt sich auf jeden Fall mal.

Re: Python Tutorials

Verfasst: Sa Aug 09, 2008 2:22 pm
von nufan
Ich hab das Python-Package auf Ubuntu schon installiert.
Mein erstes C-Programm brachte ich darauf auch zum laufen (nachdem ich das buid-Zeug heruntergeladen habe).
Du kannst die Klammern ja wieder auf ü und + legen, bzw. ö und ä legen und dafür +, ü, ö und ä auf Alt-Gr 7, 8, 9 und 0. :->
Bei uns in der Schule habe ich mal versucht mit einer auf Englisch gestellten Tastaur zu programmieren. Die Beschriftung war aber Deutsch. Es hat 30 Minuten gedauert, bis ich

Code: Alles auswählen

#include <stdio.h>
hatte. Als ich aber den ";" brauchte, hab ichs aufgegeben ^^

Re: Python Tutorials

Verfasst: Sa Apr 11, 2009 9:36 pm
von razibu
Was noch sehr empfehlenswert ist, wäre "A Byte of Python".

http://abop-german.berlios.de/

Ist in Deutsch und sehr verständlich geschrieben.

Re: Python Tutorials

Verfasst: Sa Apr 11, 2009 10:57 pm
von Xin
razibu hat geschrieben:Was noch sehr empfehlenswert ist, wäre "A Byte of Python".
Vielen Dank für den Link. Python wollte ich in der nächsten Zeit nochmal wieder näher bringen. :-)
Ansonsten willkommen im Forum.

Re: Python Tutorials

Verfasst: Di Apr 21, 2009 10:28 pm
von dP.
Was in C++ als Operatorenüberladung gelöst ist, ist in Python eine Membermethode, deren Name nicht mit dem Operator übereinstimmt. Die Operatorüberladung selbst ist letztendlich eine Memberfunktion, die allerdings als Bezeichner den entsprechenden Operator erhält. Das gefällt mir an Python nicht.
Was genau stört dich daran? Mir ist das noch nie negativ aufgestoßen. Ob die Methode, die ich überlade __add__ oder operator+ heißt, ist doch erstmal egal. Gut, ich kann keine Operatoren als freie Funktionen schreiben. Aber da weiß ich auch nicht, wie das in Python gelöst werden sollte. Wie kriegt der Interpreter denn raus, welcher Operator jetzt wirklich aufgerufen wird?

Re: Python Tutorials

Verfasst: Di Apr 21, 2009 10:56 pm
von Xin
dP. hat geschrieben:
Was in C++ als Operatorenüberladung gelöst ist, ist in Python eine Membermethode, deren Name nicht mit dem Operator übereinstimmt. Die Operatorüberladung selbst ist letztendlich eine Memberfunktion, die allerdings als Bezeichner den entsprechenden Operator erhält. Das gefällt mir an Python nicht.
Was genau stört dich daran? Mir ist das noch nie negativ aufgestoßen. Ob die Methode, die ich überlade __add__ oder operator+ heißt, ist doch erstmal egal. Gut, ich kann keine Operatoren als freie Funktionen schreiben. Aber da weiß ich auch nicht, wie das in Python gelöst werden sollte. Wie kriegt der Interpreter denn raus, welcher Operator jetzt wirklich aufgerufen wird?
Genauso, wie ein Compiler!?

Es geht mir um die Frage der Definition eines überladenen Operators. Und hier finde ich die Syntax eher bescheiden, bei C sage ich dass ich einen Operator überladen möchte und welchen. Bei Python muss ich mir eine Zuordnung zwischen Operator (+ == add) und diese ätzenden Unterstriche, die ich so auch ablehene.

Re: Python Tutorials

Verfasst: Mi Apr 22, 2009 3:39 pm
von dP.
Genauso, wie ein Compiler!?

Code: Alles auswählen

def __add__(a, b):
    return a + b

def __add__(a, b):
    return a - b

a = MyNumberType(3)
b = AnotherNumberType(4)

c = a + b
Was steht in c? und woher weiß der Interpreter, welches __add__ er nehmen soll, wenn man keine Funktionen an Hand von Typen überladen kann? Daher finde ich es hier ganz richtig, dass man nur die Möglichkeit einer Überladung in der Klasse hat. Was dumm ist:

Code: Alles auswählen

a = MyNumber(5)
a + 3 # funktioniert
3 + a # TypeError
Es geht mir um die Frage der Definition eines überladenen Operators. Und hier finde ich die Syntax eher bescheiden, bei C sage ich dass ich einen Operator überladen möchte und welchen. Bei Python muss ich mir eine Zuordnung zwischen Operator (+ == add) und diese ätzenden Unterstriche, die ich so auch ablehene.
Gut, über Geschmack lässt sich streiten. Bei Python bedeutet ein führender Bodenstrich halt 'Achtung, Objektinterna' und zwei führende Bodenstriche das selbe, nur dass die Namen noch verändert werden. Damit es bei Vererbung keine Probleme gibt. Schon sinnvoll die Regel, aber gerade bei häufigen Methoden wie __init__, die man auch mal von ausserhalb einer Klasse aufruft, schon unschön.

Re: Python Tutorials

Verfasst: Mi Apr 22, 2009 8:14 pm
von Xin
dP. hat geschrieben:
Genauso, wie ein Compiler!?

Code: Alles auswählen

def __add__(a, b):
    return a + b

def __add__(a, b):
    return a - b

a = MyNumberType(3)
b = AnotherNumberType(4)

c = a + b
Was steht in c?
In C nix, da kann man keine Operatoren überladen.
In C++

Code: Alles auswählen

ResultingType operator + (MyNumberType & lhs, AnotherNumberType & rhs ) { return ResultingType( lhs.Value + rhs.Value ); }
ResultingType operator + (AnotherNumberType & lhs, MyNumberType & rhs ) { return rhs + lhs; } // Kommutativgesetz
dP. hat geschrieben:und woher weiß der Interpreter, welches __add__ er nehmen soll, wenn man keine Funktionen an Hand von Typen überladen kann? Daher finde ich es hier ganz richtig, dass man nur die Möglichkeit einer Überladung in der Klasse hat.
Ich habe auch nie behauptet, dass ich die schwache Typisierung in Python in irgendeiner Form gutheißen würde.
Und ich sehe auch nicht ein, einen Mangel einer Sprache durch einen anderen Mangel zu entschuldigen.
dP. hat geschrieben:Was dumm ist:

Code: Alles auswählen

a = MyNumber(5)
a + 3 # funktioniert
3 + a # TypeError
In C++ kein Problem.
dP. hat geschrieben:
Es geht mir um die Frage der Definition eines überladenen Operators. Und hier finde ich die Syntax eher bescheiden, bei C sage ich dass ich einen Operator überladen möchte und welchen. Bei Python muss ich mir eine Zuordnung zwischen Operator (+ == add) und diese ätzenden Unterstriche, die ich so auch ablehene.
Gut, über Geschmack lässt sich streiten. Bei Python bedeutet ein führender Bodenstrich halt 'Achtung, Objektinterna' und zwei führende Bodenstriche das selbe, nur dass die Namen noch verändert werden. Damit es bei Vererbung keine Probleme gibt. Schon sinnvoll die Regel, aber gerade bei häufigen Methoden wie __init__, die man auch mal von ausserhalb einer Klasse aufruft, schon unschön.
Sicher kann man über Geschmack streiten. Allerdings sollte der Geschmack da zurücktreten, wo Konsistenz gefragt wird. Ich sehe den Zusammenhang zwischen a+b und "operator +" als deutlicher gegeben, als bei __add__. Über __+__ hätte man noch reden können, aber hier werden zusätzliche Schlüsselwörter verbraten, die eigentlich nicht notwendig sind.

Re: Python Tutorials

Verfasst: Mi Apr 22, 2009 8:33 pm
von dP.
In C nix, da kann man keine Operatoren überladen.
Da haben wir aneinander vorbeigeredet. 'Welchen Wert ist an den Namen c gebunden?', hätte ich hier der Klarheit halber schreiben sollen.
Ich habe auch nie behauptet, dass ich die schwache Typisierung in Python in irgendeiner Form gutheißen würde.
Das halte ich für eine der Stärken von Python. Allerdings hätte ich Python jetzt als stark, aber eben nicht statisch typisiert bezeichnet. Zumindest hat jedes Objekt zur jeder Zeit einen genau festgelegten Typ.