Ich mache in letzter Zeit viel mit Wurzeln also habe ich mir die Frage gestellt ob man eigene Anweisungen erstellen kann.
Normal:
x = sqrt(4)
Beispiel:
2 root 4
oder
4 root 2
Kann man in Python eigene Anweisungen erstellen
Es gibt einen binären Infix-Operator für Potenzen (**). Hierüber lassen sich auch Wurzeln darstellen.
Darüber hinaus sind Operatoren auch (nur) Funktionen. Warum sollte man eine neue Schreibweise für Funktionen einfügen wollen; von einer DSL mal abgesehen?
Darüber hinaus sind Operatoren auch (nur) Funktionen. Warum sollte man eine neue Schreibweise für Funktionen einfügen wollen; von einer DSL mal abgesehen?
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
@Naitsab_33: nur wenige Programmiersprachen erlauben die Definition von Operatoren, Python nicht. Wurzelziehen ist nur eine Spezialform von Potenzieren und dafür gibt es schon einen Operator.
Code: Alles auswählen
x = 4 ** 0.5
Wenn dir das Wort "sqrt" zu seltsam vorkommt (es steht für "square root" - Quadratwurzel) dann könntest du auch definieren, dass folgendes funktioniert: x = root(4)Naitsab_33 hat geschrieben:Ich mache in letzter Zeit viel mit Wurzeln also habe ich mir die Frage gestellt ob man eigene Anweisungen erstellen kann.
Normal:
x = sqrt(4)
Beispiel:
2 root 4
oder
4 root 2
Code: Alles auswählen
def root(a):
return sqrt(a)
Hingegen die Schreibweise eines Funktionsaufrufes (Funktionsname, Klammer auf, Argumente, Klammer zu) zu ändern ist deutlich aufwändiger, würde ich hier nicht empfehlen. Wie kamst du auf die Idee? Übrigens willkommen an Bord
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
@Sirius3: Ich hatte den Eindruck, dass Naitsab_33 das Wort "sqrt" seltsam fand und lieber "root" schreiben wollte.
Da alle Antworten letztendlich "Geht nicht" antworteten, wir hier aber jemanden mit seinem ersten Post im Forum begrüßen dürfen, wollte ich eine Möglichkeit zeigen, wie es doch leicht geht.
Seine vorgeschlagene Schreibweisen "2 root 4 oder 4 root 2" sind ja extra mit "Beispiel" überschrieben und für mich also als Vorschlag eines Anfängers nicht direkt in Stein gemeisselt, wie man auch daran merkt, dass ihm selbst noch gar nicht klar zu sein scheint, in welcher Reihenfolge 2 und 4 dann stehen sollen.
Der Thread heißt zudem "eigene Anweisungen erstellen" und das geht mit "def" ganz wunderbar, was vielleicht noch nicht jeder Anfänger bemerkt hat.
Letztendlich ist die Schreibweise "4 hoch 0,5" als Alternative für "Quadratwurzel aus 4" ebenfalls schlau, wenn man die mathematischen Grundlagen schon versteht.
Da alle Antworten letztendlich "Geht nicht" antworteten, wir hier aber jemanden mit seinem ersten Post im Forum begrüßen dürfen, wollte ich eine Möglichkeit zeigen, wie es doch leicht geht.
Seine vorgeschlagene Schreibweisen "2 root 4 oder 4 root 2" sind ja extra mit "Beispiel" überschrieben und für mich also als Vorschlag eines Anfängers nicht direkt in Stein gemeisselt, wie man auch daran merkt, dass ihm selbst noch gar nicht klar zu sein scheint, in welcher Reihenfolge 2 und 4 dann stehen sollen.
Der Thread heißt zudem "eigene Anweisungen erstellen" und das geht mit "def" ganz wunderbar, was vielleicht noch nicht jeder Anfänger bemerkt hat.
Letztendlich ist die Schreibweise "4 hoch 0,5" als Alternative für "Quadratwurzel aus 4" ebenfalls schlau, wenn man die mathematischen Grundlagen schon versteht.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Man muss die Python Implementierung gar nicht modifizieren. Es würde reichen in den Import Mechanismus einzugreifen wofür es APIs gibt. Man kann dann effektiv die Definition von Python Modul und PYTHONPATH beliebig erweitern.
Das einzige Problem stellt der Compiler da den man bräuchte. Sofern man nur Python leicht modifizieren möchte könnte man da aber ziemlich gut 2to3 forken und für diesen Zweck anpassen.
Das einzige Problem stellt der Compiler da den man bräuchte. Sofern man nur Python leicht modifizieren möchte könnte man da aber ziemlich gut 2to3 forken und für diesen Zweck anpassen.