11-[函数进阶]-闭包
1.什么是闭包?
内部函数对外部函数作用域里变量的引用(非全局变量),则称内部函数为闭包。
def outer():n = 10def inner():print("inner:", n)return innerval = outer() print(val) val()
闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域
2.闭包再理解
- 计算 y = a*x +b 的值
# 旧方法 def calc(a,b,x):return a*b+xprint(calc(1,2,3)) # y = 1*2+3 print(calc(2,3,4))
# 闭包方法 def outer(a,b):def calc(x):print(a*b+x)return calcval = outer(1,2) print(val) val(3)
这个例子中,函数line与变量a,b构成闭包。在创建闭包的时候,我们通过line_conf的参数a,b说明了这两个变量的取值,这样,我们就确定了函数的最终形式(y = x + 1和y = 4x + 5)。
我们只需要变换参数a,b,就可以获得不同的直线表达函数。由此,我们可以看到,闭包也具有提高代码可复用性的作用。
如果没有闭包,我们需要每次创建直线函数的时候同时说明a,b,x。这样,我们就需要更多的参数传递,也减少了代码的可移植性。
闭包思考:1.闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成 2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存
转载于:https://www.cnblogs.com/venicid/p/8431202.html
11-[函数进阶]-闭包相关推荐
- 11. 函数进阶-函数名,返回值,作用域
11. 函数进阶 目标:掌握函数相关易错点 & 项目开发必备技能. 概要: 参数的补充 函数名,函数名到底是什么? 返回值和print,傻傻分不清楚. 函数的作用域 1.参数的补充 在函数基础 ...
- python 函数进阶-闭包函数
闭包函数 什么是闭包函数 如果内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程叫做闭包,里面的内函数是闭包函数. # 外函数 outer def outer():# 外函数变量 numv ...
- 函数进阶---闭包/装饰器/迭代器/生成器---高级特性
待完成... 转载于:https://www.cnblogs.com/py-coder/p/10037232.html
- Python 函数基础与进阶 闭包 聚合与打散
阅读目录 函数基础 基础知识 return 返回值 不可变类型和可变类型的值传递问题 函数的参数 打散和聚合 函数进阶 函数的注释 命名空间 作用域和全局变量 函数的嵌套和作用域链 函数名 闭包 函数 ...
- 好好学python·函数进阶(递归函数,回调函数,闭包函数,匿名函数,迭代器)
函数进阶 递归函数 回调函数 闭包函数 特点 匿名函数 lambda 表达式 迭代器 iter() next() 迭代器的取值方案 迭代器取值特点,取一个少一个,直到都取完,最后再获取就会报错 检测迭 ...
- javascript进阶课程--第三章--匿名函数和闭包
javascript进阶课程--第三章--匿名函数和闭包 一.总结 二.学习要点 掌握匿名函数和闭包的应用 三.匿名函数和闭包 匿名函数 没有函数名字的函数 单独的匿名函数是无法运行和调用的 可以把匿 ...
- javascript函数进阶详细内容 函数闭包 箭头函数 call bind apply用法 偏函数 回调函数
JS函数进阶 这次的内容我会给大家详细介绍函数方面的内容 1.箭头函数:ES6新增的定义函数的方式,箭头函数是用来简化函数定义语法的. - 箭头函数的语法: ()=>{} ()里面写形式参数,{ ...
- Python基础学习(七)--函数进阶,全局局部,global,nonlocal,enclosing,命名空间,作用域,重要函数,lambda,闭包
函数进阶 一.函数参数类型 可变类型参数与不可变类型参数 不可变类型参数:数字.字符串.元组 可变类型参数:列表.字典.集合 (1)不可变类型参数 fun(a)–内部修改a的值,只是修改了一个对象的副 ...
- python内置函数与闭包_Python进阶(五)----内置函数Ⅱ 和 闭包
Python进阶(五)----内置函数Ⅱ 和 闭包 一丶内置函数Ⅱ ####内置函数#### 特别重要,反复练习 ###print() 打印输入 #sep 设定分隔符 # end 默认是换行可以打印到 ...
- Python函数进阶(11)
函数进阶 函数参数类型 不可变数据类型和可变数据类型自加的区别 1. 判断gl_num和gl_list的值 命名空间 作用域 全局变量和局部变量 global 和nonlocal关键字 内置函数 1. ...
最新文章
- amazon mws api 获取所有产品_Amazon’s Choice是什么?Amazon's Choice标签全解读
- 自学python需要多长时间-大家觉得自学python多久能学会?
- 【正则化】csdn markdown python 批量给文本行行头添加“•”符号,“- ”(实心圆)
- python requests post请求_Pythonrequest发送post请求
- yum安装源是出现报冲突错误,解决办法
- 使用dotnet Cli向nuget发布包
- HBase之Table.put客户端流程(续)
- Android 系统(21)---OPPO 刘海屏适配
- 如何成为一名真正专业的程序员
- 看单片机原理图-外部FLASHW25Q64
- ELDER-RAY (多头力度和空头力度)
- 当谈判处于下风怎么办?五大策略助你逆势翻盘
- maven使用c3p0——详细(很详细)
- 域服务器用户一直被锁,Windows Server 2019 域用户账户锁定策略
- PAT 甲级 A1010
- yml格式或者叫做YAML格式数据学习
- AndroidStudio安装JB系官方中文插件
- mysql驱动的依赖和spring jdbc依赖是什么关系
- 错误: expected declaration or statement at end of input
- 一文掌握物联网开发技能树
热门文章
- duilib入门简明教程 -- 部分bug (11) (转)
- 我的博客是怎么自定义的
- 动态规划--重拾我的“背包”
- 怎样去掉警告 log4j:WARN No appenders could be found for logger
- tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法...
- python如何输出两行_python pandas dataframe拆分行(某些行一行拆成多行)
- python中for和while区别_Python学习第九篇——while和for的区别
- 钉钉机器人发送图片 python_python封装钉钉Webhook机器人消息发送逻辑
- Scrapy安装介绍
- MFC中打开文件对话框:CFileDlg