3

我有以下代码,我认为它很臭,因为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'])),
    ]
4

3 回答 3

7

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

r'/archives/{0}/{0}/{0}/{0}'.format(vi)
于 2012-10-15T09:14:55.740 回答
6

这很容易,尝试命名您的变量,然后您可以访问具有给定名称的变量,任意次数。这是一个例子:

"%(vi)s is %(vi)s" % {'vi':vi}

基本上,您使用 dict 进行替换。然后,您将格式从%<options><variabletype>(eg %2s) 更改为%(<dictKey><options><variabletype>)(eg %(vi)2s)

于 2012-10-15T09:12:35.303 回答
2

而不是写一个n重复的元组,vi你可以写(vi,)*n.

于 2012-10-15T09:11:57.667 回答