gpt4 book ai didi

web.py - 将 "globals()"作为 web.py fvars 传递的目的是什么?

转载 作者:行者123 更新时间:2023-12-04 15:24:17 25 4
gpt4 key购买 nike

web.application 接受无证的 fvars web.py tutorial 的论点通过globals()像这样:

import web

class index:
def GET(self):
return "Hello, world!"

urls = (
'/', 'index'
)

if __name__ == "__main__":
app = web.application(urls, globals())

我见过至少一个通过 locals() 的应用程序.这个变量是做什么用的,为什么要传递它 locals()globals() ?

最佳答案

它被 application.handle() 使用(依次调用 application._delegate() )将处理程序类从字符串转换为类对象本身。 Source code here.

例如,在上面的代码片段中,urls = ('/', 'index')是 URL 到类字符串的映射。所以web.application需要您的globals() dict 能够查找字符串 'index'并获得类(class)本身。

我实际上认为这是一个有点非 Pythonic 的设计。为什么不直接通过类呢?我认为 web.py 也支持这种方法。但是,我相信这些类是作为字符串完成的,因此自动重载更简单。自动重载代码使用 fvars沉重。

回复 locals() :在模块级别,locals()没有什么意义,但它返回与 globals() 相同的字典,这就是为什么它会起作用。

关于web.py - 将 "globals()"作为 web.py fvars 传递的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com