gpt4 book ai didi

Python 装饰器? - 有人可以解释一下吗?

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:15 25 4
gpt4 key购买 nike

抱歉,这是一个非常广泛的问题。

下面的代码是在网络上找到的一些内容的片段。我感兴趣的关键是以 @protected 开头的行 - 我想知道它的作用是什么以及它是如何做到的?它似乎在执行 do_upload_ajax 函数之前检查有效用户是否已登录。这看起来是一种非常有效的用户身份验证方法。我不明白这个 @ 函数的机制 - 有人可以引导我朝正确的方向解释这将如何在现实世界中实现吗? Python 3 请回答。谢谢。

@bottle.route('/ajaxupload', method='POST')
@protected(check_valid_user)
def do_upload_ajax():
data = bottle.request.files.get('data')
if data.file:
size = 0

最佳答案

仔细看看这个 enormous answer/novel 。这是我遇到过的最好的解释之一。

我能给出的最简短的解释是,装饰器将您的函数包装在另一个返回函数的函数中。

这段代码,例如:

@decorate
def foo(a):
print a

如果删除装饰器语法,则相当于此代码:

def bar(a):
print a

foo = decorate(bar)

装饰器有时会采用参数,这些参数会传递给动态生成的函数以更改其输出。

您应该阅读的另一个术语是闭包,因为这是允许装饰器工作的概念。

关于Python 装饰器? - 有人可以解释一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59060271/

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