cra*_*ice 5 python class control-flow
大家好,我在理解python类中的控制流方面遇到了一些麻烦,也就是说,一步一步地哄骗代码.鉴于下面的短代码,我想知道:当调用类MainPage时,它只执行该类中的所有内容?按线性顺序?(第一行,第二行等)

执行Python文件时,文件中的每个语句都从上到下执行.在您的情况下,有六个声明:
from ..
from ..
class MainPage ..
application = ..
def main() ..
if __name__ ..
Run Code Online (Sandbox Code Playgroud)
前两个找到其他Python模块,并执行它们的所有语句,这些语句可能只定义了一堆类,然后使用来自其他模块的值在模块中定义一些名称.因此,前两个语句之后,我们有webapp和run_wsgi_app定义.
第三个语句定义了类MainPage.它通过执行类体内的语句来实现,在这种情况下只有一个:a def.请注意,执行def语句不会执行函数体中的语句,只是将这些语句收集到命名函数中.当类主体结束时,定义的所有名称都成为类的属性.
第四个语句调用webapp.WSGIApplication,并将结果分配给application.
第五个语句定义了一个名为的函数main.
第六个陈述着眼于这个名字__name__.每次执行Python文件时,都会给它一个__name__变量.如果文件是正在运行的主要原因之一,就是在一个Python的开始,值__name__是"__main__".这个if语句是一个成语意思,"我是主程序吗?" 在这种情况下,它是,所以if语句的主体也被执行.
if的主体只调用main()函数,函数本身调用run_wsgi_app函数,将已经构建的application值传递给它.
涉及运行WSGI应用程序,但基本上相当于"等到某人访问URL,然后将URL映射到某些代码,然后执行代码".在您的情况下,您提供了与"/"关联的URL映射MainPage.一旦有人访问/ URL,MainPage将创建一个对象,并调用其上的方法.
特别是,因为用于访问/的GET方法是GET,所以WSGI app runner调用.get()该MainPage对象上的方法.get方法中的语句按顺序执行,将一些数据写入响应.当函数体中没有更多语句时,它返回.WSGI应用程序容器将该响应发送回Web浏览器!
该程序永远不会结束,因为WSGI应用程序运行器永远循环等待下一次URL访问.但如果没有,一旦主文件中的最后一个语句完成,Python程序就会完成,并且该过程将结束.
| 归档时间: |
|
| 查看次数: |
1493 次 |
| 最近记录: |