python 装饰器写法

装饰器写法

装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。 首先,让我们讨论下如何写你自己的装饰器。

这可能是最难掌握的概念之一。我们会每次只讨论一个步骤,这样你能完全理解它。

复制代码
import functools
def wx_scan(view):
    @functools.wraps(view)
    def _wrapped(*args, **kwargs):
        r_data = Manager.get_token_new(request.ut)
        print("r_data", r_data, "ut", request.ut)

        if not r_data or r_data.get("status", 0) != 1:
            myadminIndexview = MyAdminIndexView()
            return myadminIndexview.redirect_to_wx_scan()
        return view(*args, **kwargs)

    return _wrapped



@expose('/')
@wx_scan
def index(self):
    pass
复制代码

 

 

 

复制代码
# 游客小游戏 看视频
def device_youke_mingame(name=None):
    def youke_mingame(view):
        @functools.wraps(view)
        def _wrapped(*args, **kwargs):
            try:
                r_json = request.get_json()
                device_id = r_json.get("device_id", None)
                device_details = DeviceDetails.get_by_id(device_id)
                if device_details:
                    if name == "addition":
                        # 30%分数加成
                        key = "yk|addition_3||{}".format(device_details.id)
                        rds_extra.set(key, 0.3)
                        rds_extra.expire(key, 3600 * 24)

                    device_details.total_video_count = getattr(device_details, "total_video_count", 0) + 1
                    device_details.save()
                    return JsonResponse.response(code=1, user_id=device_details.id)

                return view(*args, **kwargs)

            except Exception as e:
                logger.exception(e)

        return _wrapped

    return youke_mingame
复制代码

 

posted on   星河赵  阅读(453)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示