2

Groovy 有一个 GStrings 的概念。我可以这样写代码:

def greeting = 'Hello World'
println """This is my first program ${greeting}"""

我可以从字符串中访问变量的值。

我怎样才能在 Python 中做到这一点?

- 谢谢

4

5 回答 5

5

在 Python 中,您必须明确传递可能变量的字典,您不能从字符串中访问任意“外部”变量。但是,您可以使用locals()返回包含本地范围内所有变量的字典的函数。

对于实际的替换,有很多方法可以做到(多么不合常理!):

greeting = "Hello World"

# Use this in versions prior to 2.6:
print("My first programm; %(greeting)s" % locals())

# Since Python 2.6, the recommended example is:
print("My first program; {greeting}".format(**locals()))

# Works in 2.x and 3.x:
from string import Template
print(Template("My first programm; $greeting").substitute(locals()))
于 2009-04-21T07:00:49.307 回答
3
d = {'greeting': 'Hello World'}
print "This is my first program %(greeting)s" % d
于 2009-04-21T06:45:23.963 回答
1

你不能完全...

我认为您真正能得到的最接近的是使用标准的基于 % 的替换,例如:

greeting = "Hello World"
print "This is my first program %s" % greeting

话虽如此,从 Python 2.6 开始,有一些花哨的新类可以以不同的方式做到这一点:查看2.6 的字符串文档,特别是从第 8.1.2 节开始以了解更多信息。

于 2009-04-21T06:47:02.790 回答
1

如果您尝试做模板,您可能想研究一下 Cheetah。它可以让你做你所说的,相同的语法和所有。

http://www.cheetahtemplate.org/

于 2009-04-21T06:51:06.103 回答
1

在 Python 2.6+ 中,您可以执行以下操作:

"My name is {0}".format('Fred')

查看PEP 3101

于 2009-04-21T06:51:11.500 回答