Ich schreibe ein Python-Skript in Python 3.x, in dem ich die print
-Funktion neu definieren muss. Wenn ich es in meinem Dolmetscher mache, funktioniert es gut. Aber wenn ich eine Funktion unter Verwendung des gleichen Codes erstelle, gibt es einen Fehler aus.Redefining Druckfunktion funktioniert nicht innerhalb einer Funktion
Hier ist mein Code:
list = ["print('Wow!')\n", "print('Great!')\n", "print('Epic!')\n"]
old_print = print
def print(s):
global catstr
catstr += s
catstr = ""
for item in list:
s = item
exec(s)
print = old_print
catstr
>> 'Wow!Great!Epic!'
Wie Sie habe ich meine gewünschte Ergebnis sehen bekam: 'Wow!Great!Epic!'
Jetzt habe ich eine Funktion mit dem gleichen Code machen:
def execute(list):
old_print = print
def print(s):
global catstr
catstr += s
catstr = ""
for item in list:
s = item
exec(s)
print = old_print
return catstr
Jetzt Wenn ich diese Funktion unter Verwendung des folgenden Codes ausfühle:
list = ["print('Wow!')\n", "print('Great!')\n", "print('Epic!')\n"]
execute(list)
Ich erhalte die folgende Fehlermeldung:
old_print = print
UnboundLocalError: local variable 'print' referenced before assignment
Weiß jemand, warum dies in einer Funktion nicht funktioniert?
Alle Vorschläge, wie Sie es beheben können, werden sehr geschätzt.
Es ist die erste Zeile, wie Sie Print in der Funktion definieren und als Funktion, was benutzen Sie old_print etc .. überhaupt? –
Was ist der Zweck Ihrer Frage? Oder ist das nur aus Neugier? – BPL
@BPL Es ist direkt als Folgefrage verwandt, die sie gestern [hier] (http://stackoverflow.com/questions/39460882/how-to-get-execution-of-python-print-statements-as-a) gefragt haben -string) – idjaw