Оценка внутри строки

1

Есть ли что-то вроде Rubys "Hello #{userNameFunction()}" в python?

  • 0
    Это было бы очень не пифонично, потому что это нелогично - строки - это просто строки, они не должны запускать код!
Теги:

3 ответа

9
Лучший ответ

В Python вы должны использовать интерполяцию строк

"Hello %s" % user_name_function()

или формирование строки

"Hello {0}".format(user_name_function())

Последний доступен в Python 2.6 или выше.

Также обратите внимание, что по соглашению вы не используете CamelCase для имен функций в Python (CamelCase предназначен только для имен классов - см. PEP 8).

  • 1
    Также вы не используете верблюжий футляр в рубине для чего это стоит.
2

Интерполяция строк Python наиболее близка к тому, что вы хотите.

Наиболее распространенная форма:

>>> "Hello %s" % userNameFunction()
'Hello tm1brt'

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

Но вы также можете использовать dict и использовать значащие имена для данных, которые вам нужны внутри строки:

>>> "Hello %(name)s" % {'name' : userNameFunction()}
'Hello tm1brt'
1

В Python 2.4+ вы можете использовать Template класс в string, чтобы сделать следующее:

from string import Template

def user_name_function(): return "Dave"

s = Template('Hello $s')
print s.substitute(s=user_name_function())
# 'Hello Dave'

print s.substitute({'s': user_name_function()})
# 'Hello Dave'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню