今日所学

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

本质再调用闭包

最新文章

  1. css初始化样式代码
  2. winform C#获得Mac地址,IP地址,子网掩码,默认网关
  3. SQL Server 表所在的文件组
  4. C#实现目录复制
  5. SQL 语句优化—— (一) 操作符优化
  6. c++11新特性(4) lambda捕捉块
  7. python学习笔记之五:抽象
  8. 表达式树解析"框架"
  9. jQuery第十一章
  10. SQL AlawaysOn 之五:ISCSI共享磁盘
  11. Linux服务器中安装Oracle
  12. 【bzoj3173-最长上升子序列-一题两解】
  13. 反射 学习笔记之Class类的使用
  14. 洛谷P1140 基因匹配 //DP真正意义上的一血
  15. Day11--Python--函数名,闭包,迭代器
  16. scrapy meta不用pipe用命令-o
  17. C_汉诺塔的故事(递归)
  18. Azure 标准与高级托管磁盘存储的相互转换
  19. 【Oracle】ORA 01810 格式代码出现两次-转
  20. jdk eclipse SDK下载安装及配置教程

热门文章

  1. js事件循环机制辨析
  2. Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件
  3. WKWebView讲解与使用
  4. ASP.NET Core的JWT的实现(自定义策略形式验证).md
  5. Ext JS中的typeOf
  6. 原生js实例对象方法
  7. wordpress 角色权限
  8. vmware完整克隆(linux)
  9. 微信小程序中通过腾讯地图进行逆地址解析报错message: "请求来源未被授权, 此次请求来源域名:servicewechat.com"
  10. PM过程能力成熟度3级