私は多くの場合、私はの線に沿ってコードで終わる、書式設定文字列の非常に多くを行ういくつかのコードを持っている:呼び出しスコープから変数を引き出すストリングフォーマッターは悪い習慣ですか?
私は大規模な文字列に多数の変数を補間しようとしている"...".format(x=x, y=y, z=z, foo=foo, ...)
。
補間する変数を見つけるためにinspect
モジュールを使用するこのような関数を書かないとよい理由はありますか?
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}")
あなたもちょうど '地元()'や 'グローバル()' –
@FC使用することができます確かに、しかし、 '補間( "..."、**地元の人々を持ちます()) 'は、どこも乱雑に見えますが、' s'がローカル変数であるまれなケースで失敗します。最初の引数を2回設定しようとしているので、 – Eric
私は明らかな質問をします。これらの変数はなぜグローバルスコープにあり、最初は辞書にないのですか? – Wilduck