2016-05-18 5 views
1

'Foo bar {some_var} baz'.format(**locals())のようなコードを書くことがPythonでうまくいきます。これまで慣れ親しんでいた他の言語にもよりますが、もう少し詳しく説明しているかもしれませんが、グローバル変数を取り込もうとする時はどうでしょうか? format(**dict(locals(), **globals())))はかなり一口であることをPythonの `format`を使用したローカル変数とグローバル変数によるテンプレート

GLOBAL_VAR = "Hello" 

def func(): 
    local_var = "world!" 
    print("{GLOBAL_VAR} {local_var}".format(**dict(locals(), **globals()))) 

func() 

:私ができる最善のはこれです。グローバル変数とローカル変数の両方を名前に置き換えたいとき、文字列テンプレートを行うためのより簡潔な方法がありますか?

答えて

3

3.6では、あなたは最終的には、文字列補間のための構文レベルのサポートを得られます。これを書いているよう

f"{GLOBAL_VAR} {local_var}" # No format(), locals(), or globals()! 

を、3.6とはいえ、まだここではないです。

"{GLOBAL_VAR} {local_var}".format(**globals(), **locals()) 

3.5 がここですが、多分あなたはそれを使用していない、またはあなたは、Pythonの古いサポートする必要があります。

3.5では、同じ関数呼び出しでキーワード引数のための2つdictsを解凍することができますバージョン。

3.5より下のPythonバージョンでは、実際にはもっと簡潔なものはありません。

関連する問題