Betrachten Sie diesen Beispiel-Python-Code. Es liest von stdin und schreibt in eine Datei.
%Vor% Angenommen, ich möchte dasselbe Programm so modifizieren, dass es stattdessen in stdout schreibt. Dann muss ich jede Instanz von f.write()
durch sys.stdout.write()
ersetzen. Aber das wäre zu langweilig. Ich möchte wissen, ob es eine Möglichkeit gibt, f
als Alias für sys.stdout
anzugeben, so dass f.write()
als sys.stdout.write()
behandelt wird.
Tu es einfach
%Vor% Jetzt müssen Sie nur noch f = sys.stdout
anstelle von f = open(fileName)
eingeben. (Und f.close()
entfernen)
Auch , Bitte beachten Sie die folgende Syntax für Dateien.
%Vor%Die Datei wird auf diese Weise automatisch für Sie geschlossen.
Namen in Python sind nur Bindungen. Deshalb:
%Vor% bindet nur den Namen f
an das Objekt , das auch an sys.stdout
... gebunden ist
Beachten Sie, dass alle Änderungen, die Sie an diesem Punkt an f
oder sys.stdout
vornehmen, sich auf beide auswirken. Also tun Sie nicht f.close()
wie du normalerweise sys.stdout.close()
... nicht machen würdest ...
Ja, in Python können Sie jede Klasse / Funktion / Methode usw. aliasieren. Weisen Sie einfach den Wert, den Sie verwenden möchten, einer anderen Variablen zu:
%Vor% Nun wird jede Methode, die Sie auf f
aufrufen, auf sys.stdout
aufgerufen. Sie können dies mit allem tun, was Sie möchten, zum Beispiel auch mit i = sys.stdin
etc.
Tags und Links python