Seite 1 von 1
Funktionen vordefinieren ?
Verfasst: Mittwoch 8. Oktober 2025, 14:34
von DL3AD
Hallo in die Runde,
unter C++ und Lazarus Freepascal habe ich öfters Funktionen vordefiniert und war so nicht mehr an das Top Down gebunden.
in etwa so:
Code: Alles auswählen
//Vordefinition
void mycmd();
//eigendliche Funktion
void mycmd(){
// machwas
}
Gibt es sowas auch unter Python ?
Re: Funktionen vordefinieren ?
Verfasst: Mittwoch 8. Oktober 2025, 14:50
von __blackjack__
@DL3AD: Nein. Das wird ja *ausgeführt*, und bevor ein ``def`` das eine Funktion definiert nicht ausgeführt wurde, kann man die Funktion nicht benutzen, weil es da dann noch nichts gibt was man aufrufen könnte.
Was ist denn das konkrete Problem?
Re: Funktionen vordefinieren ?
Verfasst: Mittwoch 8. Oktober 2025, 15:05
von DL3AD
... kein konkretes Problem.
Ich vergleich nur mit dem was ich bisher tat.
Setze zur Übung ältere kleinere Projekte noch mal neu auf mit Python.
MicroPython ist auch ganz nice - macht spass.
Re: Funktionen vordefinieren ?
Verfasst: Mittwoch 8. Oktober 2025, 15:24
von __blackjack__
Probleme gäbe es da doch eigentlich nur wenn man Code auf Modulebene schreibt, bei so Sachen wie Dekoratoren, und wenn die `main()` ausgeführt wird, muss halt vorher alles definiert sein, was die verwendet.
Funktionen müssen nur definiert sein wenn man sie tatsächlich aufruft, und noch nicht wenn der Compiler nur Code übersetzt der Funktionen aufruft. Das übersetzen eines Moduls passiert ja komplett bevor das Modul ausgeführt wird.
Wenn es kein Problem löst, verstehe ich nicht so ganz warum Du das machen willst. Kannst ja die Funktionsdeklaration als Kommentar oder in den Modul-DocString schreiben. Ist doppelte Arbeit, und man muss immer darauf achten, dass Deklaration und tatsächliche Funktionsdefinition immer gleich bleiben, denn Python interessiert sich für die Definition ja nicht und stellt dann auch nicht fest wenn die nicht zusammenpassen, wie der Compiler bei C++ oder Lazarus.
Die Reihenfolge die Python für einige wenige Konstrukte innerhalb einer Datei *erzwingt* würde ich auch als „bottom up“ und nicht als „top down“ bezeichnen. Das die meisten diese Reihenfolge auch beibehalten wenn sie nicht erzwungen wird, ist halt konsistent, so dass man sich leichter im Quelltexten zurecht findet.
Re: Funktionen vordefinieren ?
Verfasst: Mittwoch 8. Oktober 2025, 17:42
von DeaD_EyE
DL3AD hat geschrieben: Mittwoch 8. Oktober 2025, 14:34
unter C++ und Lazarus Freepascal habe ich öfters Funktionen vordefiniert und war so nicht mehr an das Top Down gebunden.
...
Gibt es sowas auch unter Python ?
Bei C/C++ erreicht man das über die Header-Dateien. Wenn man als Entwickler z.B. eine Bibliothek nutzen möchte, reicht die kompilierte Bibliothek und die Header-Datei aus. Den Quellcode benötigt man zum Aufrufen der Funktionen nicht.
Bei Python gibt es etwas Ähnliches für TypeHints:
https://mypy.readthedocs.io/en/stable/stubs.html
Oftmals fehlen die TypeHints bei bestimmten Python-Modulen (häufig von Drittanbietern). Die TypeHints helfen der IDE die korrekten Typen und ggf. Fehler zu erkennen. Für Micropython gibt es z.B. auch Stubs:
https://github.com/Josverl/micropython-stubs
Re: Funktionen vordefinieren ?
Verfasst: Mittwoch 8. Oktober 2025, 19:19
von nezzcarth
DL3AD hat geschrieben: Mittwoch 8. Oktober 2025, 14:34
unter C++ und Lazarus Freepascal habe ich öfters Funktionen vordefiniert und war so nicht mehr an das Top Down gebunden.
Die Sprachen, die ich kenne, die Funktionsprototypen haben (z.B. C und Perl), machen das, weil die Reihenfolge beim Übersetzen/Kompilieren wichtig ist, um bestimmte Merkmale der Sprache in Bezug auf Typen- und Argumenthandling auszugleichen oder beides. In Python ist die Reihenfolge, in der du deine Funktionen hinschreibst aber egal; man kann halt nur nichts ausführen, was noch nicht definiert wurde. Das Argumenthandling in Python ist semantisch recht reichhaltig und flexibel (während Perl, zumindest bis vor einigen Versionen, auf einen sehr generalisierten Mechanismus setzt). Und wenn man Typinformationen haben möchte, kann man sich seinen Quelltext mit Typ-Annotationen "verschönern".
Re: Funktionen vordefinieren ?
Verfasst: Donnerstag 9. Oktober 2025, 08:07
von Pedroski55
Vordefinieren = nicht definieren. Nicht sinnvoll in Python.
Du kannst
pass benutzen, und so eine Funktion herstellen, die gar nichts bewirkt, aber, was nutzt das?
Code: Alles auswählen
def etwas_tun():
pass
def etwas_tun():
print('ist was?')
pass
def etwas_tun():
for i in range(5):
if i == 3:
pass # später schreib etwas wunderbewirkendes hierhin
else:
print(i)
Re: Funktionen vordefinieren ?
Verfasst: Montag 20. Oktober 2025, 12:24
von oldboyJR
Ist eine Classe nicht so etwas wie Vordefinieren? Wenn ich in einer classe def funktionen mit erwarteten Variablen formuliere und diese dann mit import zur Verfügung stelle?
Re: Funktionen vordefinieren ?
Verfasst: Montag 20. Oktober 2025, 12:59
von DeaD_EyE
oldboyJR hat geschrieben: Montag 20. Oktober 2025, 12:24
Ist eine Classe nicht so etwas wie Vordefinieren? Wenn ich in einer classe def funktionen mit erwarteten Variablen formuliere und diese dann mit import zur Verfügung stelle?
Bei Python ist eine Klasse auch ein Objekt. Es gibt keine vordefinierten Funktionen im Sinne des C Präprozessor.
Re: Funktionen vordefinieren ?
Verfasst: Montag 20. Oktober 2025, 13:06
von oldboyJR
Das war eine Frage die verboten ist. Unkompetent und gefährlich zugleich weil natürlich sich darin ein nicht erwünschter Effekt ergibt. Datenklau Verwechslung und Lückenschaffer?
Re: Funktionen vordefinieren ?
Verfasst: Montag 20. Oktober 2025, 14:38
von Dennis89
Wenn du schon überall deinen Senf dazu gibst, kannst du wenigstens verständliche, deutsche Sätze schreiben? Es ist nicht nur super nervig, all die alten Themen wieder aufzumachen, nur um darin nicht verständliche und nicht zielführende Antworten zu lesen.
Re: Funktionen vordefinieren ?
Verfasst: Montag 20. Oktober 2025, 15:05
von noisefloor
@Dennis89: es ist relativ sinnlos, mit einem KI Bot mit eher schwach ausgeprägtem I oder einen Troll zu sprechen (welche der beiden Punkte zutrifft wissen wir nicht genau). Und besser wird's sicher nicht -> einfach ignorieren oder melden und auf eine Sperre hoffen. Aber grundsätzlich hast du recht: Wert in irgendeiner Form haben die Beiträge nicht.
Gruß, noisefloor