gpt4 book ai didi

python - 难以理解 python 类中的控制流(在谷歌应用引擎中)

转载 作者:太空狗 更新时间:2023-10-30 00:57:14 26 4
gpt4 key购买 nike

伙计们,我在理解 python 类中的控制流时遇到了一些麻烦,即代码一步一步发生了什么。鉴于下面的简短代码,我想知道:当调用 MainPage 类时,它只执行该类中的所有内容吗?按线性顺序? (第一行,第二行之后等等)

enter image description here

最佳答案

执行Python文件时,文件中的每条语句都是从上到下执行的。在您的情况下,有六个陈述:

from ..
from ..
class MainPage ..
application = ..
def main() ..
if __name__ ..

前两个找到其他 Python 模块,并执行它们的所有语句,这些语句可能只是定义了一堆类,然后使用来自其他模块的值在您的模块中定义了一些名称。所以在前两个语句之后,我们定义了 webapprun_wsgi_app

第三条语句定义类 MainPage。它通过执行类体内的语句来做到这一点,在本例中只有一个:def。请注意,执行 def 语句不会执行函数体中的语句,它只是将这些语句收集到命名函数中。当类主体结束时,所有定义的名称都成为类的属性。

第四条语句调用webapp.WSGIApplication,并将结果赋给application

第五条语句定义了一个名为 main 的函数。

第六条语句查看名称__name__。每次执行 Python 文件时,它都会被赋予一个 __name__ 变量。如果该文件是正在运行的主文件,即 Python 启动的文件,则 __name__ 的值为 "__main__"。这个 if 语句是一个成语,意思是“我是主程序吗?”在这种情况下,它是,所以 if 语句的主体也被执行。

if 的主体只是调用 main() 函数,它本身调用 run_wsgi_app 函数,传递您已经构建的 application的值(value)。

虽然涉及运行 WSGI 应用程序,但基本上相当于“等到有人访问 URL,然后将 URL 映射到一些代码,然后执行代码”。在您的例子中,您提供了一个将“/”与 MainPage 相关联的 URL 映射。一旦有人访问/URL,就会创建一个 MainPage 对象,并调用其中的方法。

特别地,因为用于访问/的 HTTP 方法是 GET,所以 WSGI 应用程序运行器调用 MainPage 对象上的 .get() 方法。 get 方法中的语句按顺序执行,将一些数据写入响应。当函数体中没有更多的语句时,它返回。 WSGI 应用程序容器将该响应发送回 Web 浏览器!

这个程序永远不会结束,因为 WSGI 应用程序运行器永远循环等待下一个 URL 访问。但如果没有,一旦主文件中的最后一条语句完成,Python 程序就会完成,进程就会结束。

关于python - 难以理解 python 类中的控制流(在谷歌应用引擎中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10364715/

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