python学习笔记之装饰器
2022/3/20 14:27:56
本文主要是介绍python学习笔记之装饰器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
python学习笔记之装饰器
昨日内容回顾
名称空间
名称空间就是存放变量名和变量值关系的地方
内置名称空间:python解释器自带函数的空间
全局名称空间:定义的变量名和函数名的空间
局部名称空间:函数体定义的变量名名的空间
存活时间
内置名称空间存活于python解释器使用时
全局名称空间存活于当前py文件中
局部名称空间存活于函数体代码运行时
名称空间中的查找顺序
局部空间——>全局空间——>内置空间
哪怕三个名称空间中都有相同的名字,依旧是按照这个顺序来查找的。
作用域
全局有效:内置名称空间、全局名称空间
局部有效:局部名称空间
名称空间相关关键字
global
局部名称修改全局空间中的不可变类型声明
nonlocal
局部名称修改局部名称声明
函数名的多种用法
- 函数名可以当做变量名赋值
- 函数名可以当做函数的实参
- 函数名可以当做函数的返回值
- 函数名可以当做容器类型的元素
函数的嵌套
函数内部定义单个或者多个函数的
今日学习内容
闭包函数
闭包函数的两大特征
-
闭:定义在函数内部的函数(嵌套)
-
包:内部函数使用了外层函数名称空间中的名字
外部函数返回值为内部函数的函数名
闭包函数的实际应用
闭包函数也可以给函数体传参
内部函数空间中找不到变量名绑定关系时,会在外部函数空间中找
def a(): munber = 1 def b(): print(munber) b函数在当前空间中找不到munber的值,便会向外部空间中找。
装饰器简介
装饰器需要运用到这几天所学的所有函数知识点
装饰器的本质:
在不改变被装饰对象原有的调用方式和内部代码的情况下,给被装饰的对象加上新的单个或多个功能。
装饰器原则:
对扩展开放:开放并可增加扩展功能
对修改封闭:封闭主体代码并修改额外功能
时间模块
import time # 调用时间模块 time.time # 获取当前时间戳 time.sleep # 睡眠设定时间后才继续运行
装饰器原理解析
装饰器
装饰器模板
编写装饰器有一套固定的模板格式 def 装饰器函数名(实际功能函数名) def 封包函数名(*arg,**kwargs) 执行实际功能函数前,需要的额外的功能 变量名 = 实际函数功能名(*arg,**kwargs) 执行完实际功能函数后,需要的额外功能 return 变量名 return 封包函数名
装饰器语法糖
作用:让代码写的更简洁 如: 先创建一个装饰器 def 装饰器函数名(实际功能函数名) def 封包函数名(*arg,**kwargs) 执行实际功能函数前,需要的额外的功能 变量名 = 实际函数功能名(*arg,**kwargs) 执行完实际功能函数后,需要的额外功能 return 变量名 return 封包函数名 实际使用装饰器 实际功能函数名 = 装饰器函数名(实际函数功能名) 等价于 @装饰器函数名 实际功能函数名() 使用语法糖 同样也要知道语法糖的实际意义是什么。
装饰器修复技术
from functools import wraps def f1(func): @wraps(func) def f2(): func() return f2 @f1 def f3(): pass print(f3.__name__) 就是使 实际功能函数的参数指向,保持原本的函数名 不影响代码使用,暂时这个阶段感觉不到有啥用。。。
本周小结
这个星期学习的知识点很多,把装饰器弄明白还是很有成就感的。
这篇关于python学习笔记之装饰器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python