编写此代码的更好方法是什么?

mis*_*tor 3 python idioms

我有以下代码,我觉得它因为重复而臭vi.我怎样才能更好地写出来?

vi = '([a-zA-Z0-9_\-\.]+)'

handlers = [
    (r'/register', RegistrationHandler),
    (r'/profiles/%s/%s' % (vi, vi), GetProfiles),
    (r'/archives/%s/%s/%s/%s' % (vi, vi, vi, vi), GetArchives),
    (r'/publish-profiles', PublishProfiles),
    (r'/publish-bundle/%s/%s' % (vi, vi), PublishBundle),
    (r'/upload-file/%s/%s/%s' % (vi, vi, vi), UploadFile),
    (r"/favicon\.ico", tornado.web.StaticFileHandler, dict(path=settings['static_path'])),
    ]
Run Code Online (Sandbox Code Playgroud)

Pao*_*tti 7

如果您使用的是Python 2.6+,则可以使用str.format:

r'/archives/{0}/{0}/{0}/{0}'.format(vi)
Run Code Online (Sandbox Code Playgroud)

  • 或者,与@ ted的答案`r'/ archives/{vi}/{vi}/{vi}/{vi}'结合使用.format(vi = vi) (2认同)

ted*_*ted 6

这很简单,尝试命名变量,然后可以访问具有给定名称的变量,任意次.这是一个例子:

"%(vi)s is %(vi)s" % {'vi':vi}
Run Code Online (Sandbox Code Playgroud)

基本上你使用dict替换.然后,您将格式标记从%<options><variabletype>(例如%2s)更改为%(<dictKey><options><variabletype>)(例如%(vi)2s)