升级补丁
了解 Python 中的装饰器-Python教程
来源:祺点源码论坛     阅读:143
网站管理员
发布于 2024-09-11 20:24
查看主页

简介:您是否曾经遇到过 python 代码库,其中“@login_required”或“@”符号与函数或类之上的任何其他后缀一起使用,您立即开始想知道它是什么或它的目的是什么?

或者您过去是否使用过一个框架,其中文档说您应该使用特定的装饰器来实现特定的功能,但您只是不知道其实现是如何在幕后完成的并且很想知道?

或者,您对装饰器的概念还很陌生,并且很想了解它,这是可以理解的,坚持下去,您已经走上了正轨。

先决条件:为了最大限度地理解本教程中的概念,需要具备 python 编程的背景知识。

什么是装饰器:python 中使用装饰器为类和函数提供额外的功能,而无需根据具体情况更改类或函数的初始代码结构。装饰器有时被称为“语法糖”,因为它们倾向于改善类或函数的行为。

如果您遇到这样的情况,即您的类函数与某些功能捆绑在一起,而这些功能已经被您的程序或软件的大部分使用(视情况而定),并且您想要类/函数对程序中的预期用途进行轻微修改,同时您不想破坏现有代码库的功能,因为它的耦合程度如何,您认为最好的方法是什么情况如何?您猜对了,您只需装饰类/函数即可实现所需的功能,而不会破坏正在使用它们的现有程序。就像本教程的介绍部分中提到的“@login_required”用于引用实例一样,它确实是flask框架中使用的一个装饰器,而flask框架恰好是一个流行的后端框架,每当“@login_required”装饰器放置在视图函数之上,它导致对视图函数的访问仅限于已通过身份验证/登录到应用程序的用户。在这里,我们再次看到装饰器的实际应用以及如何在构建软件中使用它。

从技术角度和较低的层面来看,装饰器是将其他函数或类作为参数,然后将它们包装在扩展/修改其功能的包装函数中的函数,然后装饰器函数现在返回完成修改的结果通过包装函数。

这里有一些代码片段,用于帮助澄清和更好地理解;

def hello(): print("hello readers")登录后复制

hello() 是一个被定义为在调用时显示“hello reader”的函数,并且它可能已经在我的程序的较大部分中使用。

立即学习“Python免费学习笔记(深入)”;

现在我需要修改 hello 函数的显示消息,而无需在程序中显式定义新函数,我可以在 hello() 函数上应用装饰,只需使用装饰器即可实现所需的修改结果。

第一步是定义你的装饰器函数

def decorator(func): def wrapper(): print("in the decorated function") func() print("bye, leaving the decorated function") return wrapper登录后复制

第二步也是最后一步,将装饰器函数作为“@”符号的后缀放置在要装饰的函数之上。

@decoratordef hello(): print("Hello readers")# Calling the decorated functionhello()This outputs: in the decorated function Hello readers bye, leaving the decorated function登录后复制

总之,python 中的装饰器在不改变已定义代码结构的情况下修改函数和类的行为,从而改善类或函数的某些行为(视情况而定)。

感谢您的阅读。

编码愉快...

以上就是了解 Python 中的装饰器的详细内容!

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 升级补丁
相关推荐
C++ 函数调用约定与栈帧管理:x86 和 x64 架构的比较-C++
win7怎么安装wow-Windows系列
修复内存卡无法格式化-手机软件
如何设置u盘密码保护-电脑知识
PHP字符串学习之利用正则过滤字符,返回数字字符-php教程

首页

消息

购物车

我的