web.application
接受web.py tutorial通过fvars
的无证globals()
参数:
import web
class index:
def GET(self):
return "Hello, world!"
urls = (
'/', 'index'
)
if __name__ == "__main__":
app = web.application(urls, globals())
我见过至少一个通过locals()
的应用程序。这个变量用于什么,为什么要传递它locals()
或globals()
?
答案 0 :(得分:4)
application.handle()
(后者又调用application._delegate()
)将处理程序类从字符串转换为类对象本身。 Source code here.
例如,在上面的代码段中,urls = ('/', 'index')
是URL到类字符串的映射。因此web.application
需要您的globals()
dict能够查找字符串'index'
并获取该类本身。
我实际上认为这是一种有点非Pythonic的设计。为什么不直接传入课堂?我认为web.py也支持这种方法。但是,我相信这些类是以字符串形式完成的,因此autoreload更简单。自动重载代码大量使用fvars
。
重新locals()
:在模块级别,locals()
实际上没有意义,但它会返回与globals()
相同的字典,这就是为什么会有效。