day13
2024-08-26 23:02:33
今日所学
1,函数的嵌套定义
2,globe nonlocal关键字
3,闭包及闭包的运用场景
4,装饰器
函数的嵌套:
在一个函数的内部定义另一个函数
1,函数2想直接使用1函数的局部变量,可以讲2直接定义到1的内部,2就可以直接访问1的变量
2,函数2名字就变成1 的局部变量,正常只能在1中使用,想在外部使用,可以讲2函数对象作为1函数的返回值
3在外部也用同名的变量2来接受1函数的执行结果,2就是可以在外部被调用
开放封闭原则:在不修改源代码与调用方式的情况下为函数添加新功能
1,不能修改源代码
无权修改,功能不持有,修改的位置多个,需要一一修改
2, 不能修改原函数的调用方式
修改调用方式的弊端,原项目
装饰器
定义:满足开放封闭原则的一个闭包应用
@outer 语法来调用outer,规定被装饰的函数对象,参数固定为一个,接受被装饰的函数对象
def outer(func)
不能确定被装饰的函数的参数:来着不拒,用可变长来接受
def inner(*args , **kwargs):
pass 新功能位
res =func(*args,**kwargs) 解压带给原功能
pass 新功能位
return res
return inner
使用装饰器(outer),得到新功能(inner)
用被装饰的函数名去接受装饰器的执行结果,调用装饰器时传入被装饰的函数对象
@outer fn = outer(fn) =inner
def fn(): pass
本质再调用闭包
最新文章
- css初始化样式代码
- winform C#获得Mac地址,IP地址,子网掩码,默认网关
- SQL Server 表所在的文件组
- C#实现目录复制
- SQL 语句优化—— (一) 操作符优化
- c++11新特性(4) lambda捕捉块
- python学习笔记之五:抽象
- 表达式树解析";框架";
- jQuery第十一章
- SQL AlawaysOn 之五:ISCSI共享磁盘
- Linux服务器中安装Oracle
- 【bzoj3173-最长上升子序列-一题两解】
- 反射 学习笔记之Class类的使用
- 洛谷P1140 基因匹配 //DP真正意义上的一血
- Day11--Python--函数名,闭包,迭代器
- scrapy meta不用pipe用命令-o
- C_汉诺塔的故事(递归)
- Azure 标准与高级托管磁盘存储的相互转换
- 【Oracle】ORA 01810 格式代码出现两次-转
- jdk eclipse SDK下载安装及配置教程
热门文章
- js事件循环机制辨析
- Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件
- WKWebView讲解与使用
- ASP.NET Core的JWT的实现(自定义策略形式验证).md
- Ext JS中的typeOf
- 原生js实例对象方法
- wordpress 角色权限
- vmware完整克隆(linux)
- 微信小程序中通过腾讯地图进行逆地址解析报错message: ";请求来源未被授权, 此次请求来源域名:servicewechat.com";
- PM过程能力成熟度3级