4

%当符号不是模数或字符串格式化程序时,符号在 python 中意味着什么?我在timeit模块中这个令人费解的代码块中遇到了它:

# 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)

我已经在 Google 和 SO 上搜索了这个运算符是什么,但没有运气。我正在使用 python 2.6.1 。

4

2 回答 2

9

这也是字符串格式。当您传递格式替换器的字典时使用该%(var)语法,并且每个都被名称替换:

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

这是文档中描述的“映射键”用法。

于 2012-07-29T06:01:56.853 回答
4

这是它作为格式说明符的用途。

>>> print '%(b)s %(a)s' % { 'a': "world", 'b': "hello" }
hello world
于 2012-07-29T06:02:34.153 回答