ich einen Code haben, der eine Menge von String-Formatierung tut, oft habe ich am Ende mit Code bis entlang der Linien von:Ist ein Zeichenfolgenformatierer, der Variablen aus seinem aufrufenden Bereich abzieht, eine schlechte Praxis?
"...".format(x=x, y=y, z=z, foo=foo, ...)
Wo ich versuche, eine große Anzahl von Variablen in eine große Zeichenfolge zu interpolieren .
Gibt es einen guten Grund, keine Funktion wie diese zu schreiben, die das Modul inspect
verwendet, um zu interpolierende Variablen zu finden?
import inspect
def interpolate(s):
return s.format(**inspect.currentframe().f_back.f_locals)
def generateTheString(x):
y = foo(x)
z = x + y
# more calculations go here
return interpolate("{x}, {y}, {z}")
könnten Sie auch 'Einheimischen nur()' oder 'Globals()' –
@FC: In der Tat, aber 'interpolieren mit ("...", ** Einheimische()) 'über den ganzen Ort sieht chaotisch, und es scheitert in seltenen Fällen, wo' s 'ist eine lokale Variable, da es versucht, das erste Argument zweimal setzen – Eric
Ich werde die offensichtliche Frage stellen. Warum sind diese Variablen im globalen Bereich und nicht in einem Wörterbuch an erster Stelle? – Wilduck