2012-07-29 3 views
2

부호가 modulo 또는 문자열 포맷터가 아닌 경우 파이썬에서 의미하는 것은 무엇입니까? 나는 timeit 모듈에이 코드 이해할 블록에서 건너 온 : 나는 구글과 SO이 연산자가 무엇인지에 대한,하지만 행운을 검색 한파이썬 사용 백분율 기호 - 모듈로 또는 문자열 서식을 나타나지 않습니다

# Don't change the indentation of the template; the reindent() calls 
# in Timer.__init__() depend on setup being indented 4 spaces and stmt 
# being indented 8 spaces. 
template = """ 
def inner(_it, _timer): 
    %(setup)s 
    _t0 = _timer() 
    for _i in _it: 
     %(stmt)s 
    _t1 = _timer() 
    return _t1 - _t0 
""" 

def reindent(src, indent): 
    """Helper to reindent a multi-line statement.""" 
    return src.replace("\n", "\n" + " "*indent) 

. 파이썬 2.6.1을 사용하고 있습니다.

답변

7

문자열 형식이기도합니다. %(var) 구문은 형식의 대체물의 사전을 통과 할 때 사용되며, 각각의 이름으로 대체됩니다 :

>>> "%(foo)s is replaced" % {'foo': 'THIS'} 
'THIS is replaced' 

the documentation에 설명 된 "매핑 키"의 사용이다.

+0

오. 권리. 문자열의 전체 메서드를 작성하는 이상한 기술에 너무 정신이 빠져 나중에 문자열 형식이 될 수 있다는 것을 잊어 버렸습니다. 프로그램에서 나중에 대체 될 것이기 때문입니다. 나는 "오 멋지다 - 새로운'% '사용법이라고 생각했다." 내 부분에 멍청한 놈. 감사. –

+2

@MatthewAdams 필자는 좋은 이유로'%'형식이 사용되지 않으므로 멍청하다고 말하지 않을 것입니다. – jamylak

3

형식 지정자로 사용됩니다.

>>> print '%(b)s %(a)s' % { 'a': "world", 'b': "hello" } 
hello world 
관련 문제