如何在URL处理程序中理解Tornado的dict?

时间:2013-10-21 04:35:12

标签: python tornado

代码片段来自Python Tornado框架。鉴于以下定义,如何理解函数调用。

定义:

class Application(object):
    def __init__(self, handlers=None, default_host="", transforms=None, wsgi=False, **settings):
        ...

函数调用:

Application([(r'/user/(.*)', ProfileHandler, dict(database=database)),])

1 个答案:

答案 0 :(得分:3)

让我们一步一步地分解它:

Application([(r'/user/(.*)', ProfileHandler, dict(database=database)),]) - 是一个构造函数调用。

[(r'/user/(.*)', ProfileHandler, dict(database=database)),] - 是第一个名为handlers的参数。

(r'/user/(.*)', ProfileHandler, dict(database=database)) - 是特定的处理程序,由以下元组描述:route regex,handler class,handler的任何其他选项。

所以dict(database=database)是第一个处理程序(处理程序元组的第3个成员)的附加选项。它似乎指定了要使用的数据库。

dict(database=database)的结果与{'database': database}的结果相同。您可以向其传递任意关键字参数来构建字典(例如:dict(database=database, hello='world', environment='development', etc='test'),等等)。

dict关键字是一个实际的字典类型名称,因此这是字典构造函数的调用。