Python基础知识学习(十四)——装饰器 原创

685-杜同学

发表文章数:68

首页 » Python » 正文

1.概述

装饰器是用于管理和增强函数和类行为的代码。它提供一种在函数或类定义中插入自动运行代码的机制

优势:更明确的语法、更高的代码可维护性、更好的一致性

2.函数基础

在掌握装饰器之前先复习一下函数基础

  • 将函数赋给变量

将函数hello赋值给了greeting变量。调用greeting函数也就是在调用hello函数

Python基础知识学习(十四)——装饰器
                    原创

Python基础知识学习(十四)——装饰器
                    原创

  • 将函数作为参数传递

将函数作为参数传递给其他函数。

Python基础知识学习(十四)——装饰器
                    原创

  •  函数嵌套

greeting函数里嵌套hello函数,并返回hello函数,带()的返回会直接调用hello函数(一般不这么用),不带括号的返回需要执行时会返回函数,想要执行内部的函数需要再增加一个括号。

Python基础知识学习(十四)——装饰器
                    原创

  • 跨域访问

内侧函数会使用自己作用域里定义的变量

Python基础知识学习(十四)——装饰器
                    原创

若加上nonlocal标识会使用外侧的变量 (其他标识还有global 详见python基础学习(五)函数章节)

Python基础知识学习(十四)——装饰器
                    原创

3.装饰器

装饰器有两种方式添加

  • 函数定义装饰器
  • 类定义装饰器

函数定义装饰器

首先定义一个参数为函数的函数,并在其内部定义一个函数,调用参数函数。对参数函数的返回值进行装饰

其次,将我们定义的装饰器以@装饰器名 修饰在函数上

Python基础知识学习(十四)——装饰器
                    原创

执行结果

Python基础知识学习(十四)——装饰器
                    原创

 

 

 

装饰器的原理:将调用装饰器的函数作为参数传递给装饰器函数,在执行

Python基础知识学习(十四)——装饰器
                    原创

Python基础知识学习(十四)——装饰器
                    原创

 

类定义的装饰器

定义__init__()函数初始化类

定义__call__()函数作为装饰器

Python基础知识学习(十四)——装饰器
                    原创

执行结果:

Python基础知识学习(十四)——装饰器
                    原创

 

函数定义的装饰器可以用在类中的方法上

Python基础知识学习(十四)——装饰器
                    原创

Python基础知识学习(十四)——装饰器
                    原创

类定义的装饰器用在类定义的方法上会产生问题,这是因为类里面的self会和装饰器的self冲突,想要解决这个冲突需要别的方面的知识,所有我们在使用时最好还是使用用函数定义的装饰器

Python基础知识学习(十四)——装饰器
                    原创

Python基础知识学习(十四)——装饰器
                    原创

 

装饰器的调用顺序——就近原则

Python基础知识学习(十四)——装饰器
                    原创

Python基础知识学习(十四)——装饰器
                    原创

打印结果

Python基础知识学习(十四)——装饰器
                    原创

 

功能类似的装饰器我们可以在装饰器外部再嵌套一个接受参数的函数使装饰器更加灵活,注意它的返回结果。

Python基础知识学习(十四)——装饰器
                    原创

使用再嵌套的装饰器

Python基础知识学习(十四)——装饰器
                    原创

打印结果:

Python基础知识学习(十四)——装饰器
                    原创

Python基础知识学习(十四)——装饰器
                    原创

打印结果:

Python基础知识学习(十四)——装饰器
                    原创

 

拜师教育学员文章:作者:685-杜同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Python基础知识学习(十四)——装饰器 原创》 发布于2020-09-16

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录