IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python学习 24 - 装饰器 、带参数的装饰器、部分解压序列 -> 正文阅读

[Python知识库]Python学习 24 - 装饰器 、带参数的装饰器、部分解压序列

个人学习总结笔记如有不足和错误欢迎指教谢谢

????????当需要修改一个已经写好的函数的时候? 或者 需要给函数添加一些相同的功能的时候 就需要用到装饰器

装饰器就像 让函数调用函数 从而实现 修改已有函数 或 为函数添加功能

装饰器的定义

????????本质就是一种函数,为其他函数添加附加的功能

????????原则:不修改被修饰函数的源代码

?????????????????? 不修改被修饰函数的调用方式

装饰器的知识储备

????????装饰器 = 高阶函数 + 函数嵌套 + 闭包

????????高阶函数:

????????????????函数接收的参数是一个函数名

????????????????函数的返回值是一个函数名

????????????????满足以上条件任意一个都可以称之为高阶函数

????????闭包

????????????????就是作用域的概念

def abc(x1):  # 这就是装饰器
	def abc1(*args):
		print(123)
		res = x1(*args)  # 运行背传入的函数
		return res
	return abc1

@abc  # 它就相当于 aaa = abc(aaa)  abc 就是装饰器名字
def aaa(n1):
	print(n1)
	return '这里是aaa'

print(aaa(5555))

输出数据为:

123
5555
这里是aaa

上面的例子就是给函数aaa 装一个装饰器

用来给aaa这个函数增加一个显示123这个功能

但是又没有对aaa这个函数本身进行修改

????????装饰器 其实就是 用一个嵌套的 函数 把现有的 一个独立函数 包裹起来? 这样一来 就可以在嵌套的中间层 添加需要的程序 而且还不用改变现有的函数 以及 现有函数调用的方式

??????? 还有一种 就是又参数的 装饰器 就像下面的例子 装饰也是可以带入相应的参数 来影响 中间层的 函数执行命令 导致输出的结果不同

def abcd(shuchuzifu):
    def abc(x1):
        def abc1(*args):
            if shuchuzifu == 1:
                print(123)
            elif shuchuzifu == 2:
                print(456)
            else:
                print(777777)
            res = x1(*args)  # 运行背传入的函数
            return res
        return abc1
    return abc

@abcd(2)  # 它就相当于 aaa = abcd(aaa)  abcd 就是装饰器名字 (2)就是给整个装饰器中间层带的参数
def aaa(n1):
	print(n1)
	return '这里是aaa'

print(aaa(5555))

输出结果为

456
5555
这里是aaa

可以看出 其实我们只是在原来的 装饰器外面 又套了一层函数 而且让这个函数 return 原来的函数名

然后再把原来@的 装饰器名 改变成 装饰器最外层的函数名 这样就能把这个参数带入了 装饰器中

带参数的装饰器

????????可以在无参数的装饰器外层再 套一层 函数 这个函数 只是在最初定义的时候 定义所需要的参数个数 的变量名 类型等

????????然后 这个最外层的 函数 return 就是里面下一层的函数 也就是 无参数的函数

????????再@的时候 要@外层的函数 并且附带上真实的参数

ps:解压序列

a,b,c = (1, 2, 3)
#上面这个赋值就等于下面
a = 1
b = 2
c = 3

这样比较便利

还有一种用法就是

a,b,c,d,e = (1, 2, 3, 4, 5)
a, *_, e = (1, 2, 3, 4, 5)
#a = 1
#_ = (2, 3, 4)
#e = 5

中间的_承受了 中间所有的 赋值

另外再 python中

a = 1
b = 2
a, b = b, a
# a = 2 ,b = 1

还可以这样使用解压序列

非常的方便

???????????????????????????

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 11:01:17  更:2021-12-10 11:01:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:20:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码