GStrings в Python - PullRequest
       36

GStrings в Python

2 голосов
/ 21 апреля 2009

Groovy имеет концепцию GStrings. Я могу написать код так:

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

Я могу получить доступ к значению переменной из строки.

Как я могу сделать это в Python?

- Спасибо

Ответы [ 5 ]

5 голосов
/ 21 апреля 2009

В 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()))
3 голосов
/ 21 апреля 2009
d = {'greeting': 'Hello World'}
print "This is my first program %(greeting)s" % d
1 голос
/ 21 апреля 2009

В Python 2.6+ вы можете сделать:

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

Выезд PEP 3101 .

1 голос
/ 21 апреля 2009

Если вы пытаетесь делать шаблоны, вы можете захотеть заглянуть в Гепарда. Это позволяет вам делать то, о чем вы говорите, тот же синтаксис и все.

http://www.cheetahtemplate.org/

1 голос
/ 21 апреля 2009

Вы не можете точно ...

Я думаю, что самое близкое, что вы можете получить, это использовать стандартную подстановку на основе%, например:

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

Сказав это, в Python 2.6 есть несколько новых классных классов, которые могут делать это по-разному: посмотрите строковую документацию для 2.6 , в частности, из раздела 8.1.2 и далее, чтобы узнать больше .

...