首页
学习
活动
专区
工具
TVP
发布

python flask route中装饰器的使用

问题:route中的装饰器为什么感觉和平时使用的不太一样,装饰器带参数和不太参数有什么区别?被修饰的函数带参数和不带参数有什么区别?

测试1:装饰器不带参数,被修饰的函数也不带参数。

此时输出为:

如果执行cal()那么将会使用use_log函数,返回的是wrapper()

如果执行cal()的返回值,那么将执行cal()函数体的内容

结果为:

测试2:如果装饰器带参数,被修饰的函数不带参数

这个时候调用cal()那么将会执行wrapper()的函数体+cal()的函数体。

测试3:如果装饰器不带参数,被修饰的函数带参数

测试4:如果装饰器带参数,被修饰的函数也带参数。最复杂的情况。

经过上面的分析之后,再看flask中使用的是哪种情况:

样例代码:

@ app.route(’/’)的代码如下:

可以看到装饰器的参数为‘/’,被修饰的函数为:hello(),所以这里属于第二种情况,即使不调用hello()函数,decorator的函数体也是被执行的,也就是说,只要使用装饰器添加了路由规则,那么就会被加入到map中形成映射关系。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191209A0QZZ000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券