使用Python`format`模拟本地和全局变量

kuz*_*roo 3 python string-formatting

在Python中能够编写像这样的代码是很好的'Foo bar {some_var} baz'.format(**locals()).根据您习惯使用的其他语言,您可能已经发现有点冗长,但是当您想要引入全局变量时呢?我能做的最好的就是:

GLOBAL_VAR = "Hello"

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

func()
Run Code Online (Sandbox Code Playgroud)

format(**dict(locals(), **globals())))是非常满口的.当我想用名称替换全局变量和局部变量时,是否有更简洁的方法来进行字符串模板化?

use*_*ica 6

在3.6中,您最终将获得字符串插值的语法级支持:

f"{GLOBAL_VAR} {local_var}" # No format(), locals(), or globals()!
Run Code Online (Sandbox Code Playgroud)

在撰写本文时,3.6还没有到此.

在3.5中,您可以在同一函数调用中解压缩两个dicts用于关键字参数:

"{GLOBAL_VAR} {local_var}".format(**globals(), **locals())
Run Code Online (Sandbox Code Playgroud)

3.5 在这里,但也许你没有使用它,或者你必须支持旧的Python版本.

在3.5以下的Python版本中,没有更简洁的东西.