Flask 路由机制分析之一

本文探讨了Flask应用启动的路由机制,介绍了Python函数的特性,如作为参数传递、嵌套函数、返回函数和函数内省。重点讲解了装饰器的概念及其在Flask中的应用,如基本装饰器示例和Flask框架中的常用装饰器。
摘要由CSDN通过智能技术生成

一、前言

Flask Run运行机制剖析》这篇我们讲了应用启动的内部机制,启动后就开始监听Http请求了,请求过来如何跳到对应的函数执行,这就是路由机制。我们沿用上一篇例子,来探究一下@app.route("/")内部干了些什么事。

二、Python中函数特性

装饰器是在不改变对象结构的情况下向现有对象添加功能,它比生成子类更灵活,要理解装饰器之前我们先要要掌握Python中函数重要的几个特性。

【Python中一个函数既可以做为参数被传递,也可以做为另一个函数的返回值】

1、函数中传递函数

执行结果如下:

注:func2定义了一个入参为函数类型,并且在函数内部执行该传入的函数,这里调用时把func1这个函数传进去,这个和Java中的入参为接口,然后调用接口的方法差不多(Android中大量的callBack就是这样实现的)。

2、函数中定义函数

定义一个函数后可以在其内部再定义一个函数(嵌套函数)。

注:func1内部定义了函数func2,func1执行时可以调用内部func2,直接执行func2提示未被定义,说明func2只能在func1中被调用

3、函数返回函数

一个函数可以将另一个函数做为返回值返回。

执行结果

注:执行func1(1)返回的func3是指向func2函数的地址,然后执行func3(2)就会调用func2函数输出其返回值。

4、函数内省

函数内省是指在运行时检查对象类型的一种能力,可以理解为类型检查。

内省常见的方法如下:

三、装饰器

Python中的装饰器是高级语法(Java中装饰器是一种设计模式),它的作用是为已经存在的对象添加额外的功能,常用于插入日志、Web权限校验和缓存等,在使用上和Java的AOP、Annotation比较相似。

1、最简单装饰器例子

执行后输出

注:一个最简单的装饰器,入参为函数,函数内部嵌套函数并且返回内部函数地址,这个其实可以理解为Java中的AOP。

2、使用@调用装饰器

更简单的语法糖 @+装饰器名称放在要被装饰函数前面。

执行后输出

3、带参数的装饰器

执行后结果输出

Flask常见的装饰器@app.before_request、@app.after_request、@app.error_handlers()、@login_require()以及@app.router()等等,理解了装饰器以后我们就可以往下继续阅读@app.route("/")的源码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值