@nfehren: Funktionen sollte keine Werte einfach so benutze was nicht als Argument übergeben wurden, ausser wenn es Konstanten sind. In diesem Fall betrifft das `text` und `stern`. Es muss, damit die Funktion funktioniert auf Modulebene etwas mit den Namen `text` und `stern` geben. Das sollte es auf Modulebene aber gar nicht geben, es sei denn es ist eine Konstante, Funktion, oder Klasse. Falls es als Konstante gemeint war, dann würde der Name eigentlich komplett in Grossbuchstaben geschrieben. Siehe:
Style Guide for Python Code
Funktionsnamen sollten eine Tätigkeit beschreiben, denn sie tun etwas. Auch um sie von anderen ”passiven” Werten besser unterscheiden zu können. `rahmen` beschreibt eher ein ”Ding”, also ein Objekt oder eine Datenstruktur die ein ”Ding” beschreiben/repräsentieren.
Auch `zeichne_rahmen()` oder `drucke_rahmen()` wäre inhaltlich nicht richtig, denn die Funktion gibt nur eine Trennlinie aus, also den oberen oder unteren Teil eines Rahmens.
Da der Text mit der Funktion aber eigentlich nicht wirklich etwas zu tun hat, denn man möchte vielleicht auch Rahmen ohne Text zeichnen, oder einen der unabhängig von der Länge des Textes ist, zum Beispiel einen der über die gesamte Breite eines Terminals geht, sollte man nicht den Text sondern die gewünschte Länge übergeben. Dann bleibt allerdings eine Funktion übrig die vielleicht die Funktion nicht wert ist, weil man das auch direkt in den Quelltext schreiben könnte:
Code: Alles auswählen
def drucke_linie(laenge, zeichen='*'):
print(zeichen * laenge)
Eine Funktion die *tatsächlich* einen gegebenen Text mit einem Rahmen versehen ausgibt, wäre vielleicht sinnvoller.
Aber als erstes solltest Du aufhören den Rest des Programms direkt auf Modulebene zu schreiben. Wenn man konsequent das Hauptprogramm in eine `main()`-Funktion schreibt und mit dem ``if __name__ == '__main__':``-Idiom aufruft, fällt es leichter sauber zu programmieren, weil man nicht mehr aus versehen, oder gar absichtlich, Werte in Funktionen benutzen kann, die nicht als Argument übergeben wurden. Also als Grundgerüst am besten immer hiermit anfangen:
Code: Alles auswählen
def main():
pass # Hier kommt das Hauptprogramm hinein.
if __name__ == '__main__':
main()