Python 的装饰器执行顺序问题

fang_faye 2018-09-26 07:09:50
我用 flask 框架做一个网站的过程中,要用到装饰器,缩减版代码如下:


def testwra(func):
print "testwra"
def _wrapper():
print "wra"
r = func()
return r
print "end"
return _wrapper

@testwra
@app.route('/users', methods=['GET'])
def get_users():
return ['33', '44']


这里,正常的执行顺序不应该是 testwra->先后打印 testwra 和 end->调用_wrapper->打印 wra->调用 func()函数->返回 list->返回 r,但是我这里在浏览器中输入 url ( http://localhost:5000/users ),却不会打印 wra,好像是没有进入_wrapper 函数中。

而且还会报错 TypeError: 'list' object is not callable
list 不是可以作为返回值的吗?
...全文
309 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
anguoguo 2018-10-12
  • 打赏
  • 举报
回复
我是初学者,不知道那个@app.route装饰器是做什么的
你的代码中貌似只有函数定义,没有函数调用吧
@testwra执行会打印testwra和end,并用_wrapper()替换get_users(),但不会执行_wrapper()

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧