2011-03-12 2 views
1

Rubys "Hello #{userNameFunction()}"과 같은 것이 있습니까?문자열 내부 평가

+0

반 직관적이기 때문에 매우 불리합니다. 문자열은 문자열이며 코드를 실행하면 안됩니다. – katrielalex

답변

9

파이썬에서 문자열 보간

"Hello %s" % user_name_function() 

또는 문자열 형식화하는을 사용

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

후자는 파이썬 2.6 이상 사용할 수 있습니다.

또한 관습에 따라 CamelCase는 Python에서 함수 이름으로 사용하지 않습니다 (CamelCase는 클래스 이름 전용입니다 - PEP 8 참조).

+1

루비에서 낙타의 경우도 마찬가지입니다. –

2

파이썬의 문자열 보간은 원하는 것에 가장 가깝습니다.

가장 일반적인 형태는 다음과 같습니다

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

이 그들이 문자열에 필요한 순서대로 데이터를 제공하는 튜플을 사용한다.

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

파이썬에서이 같은 일을하기 위해 stringmoduleTemplateclass을 사용할 수 있습니다 2.4+ : 당신은 또한 당신이 문자열 내에서 필요로하는 데이터에 대한 dict 사용할 의미있는 이름을 사용할 수 있습니다

하지만, :

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'