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
}
Code: Alles auswählen
//Vordefinition
void mycmd();
//eigendliche Funktion
void mycmd(){
// machwas
}
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.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 ?
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".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.
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)