python教程:闭包函数
一:大前提
闭包函数 = 名称空间与作用域 + 函数嵌套 + 函数对象
核心点:名字的查找关系是以函数定义阶段为准
二:什么是闭包函数
"闭"函数指的该函数是内嵌函数
"包"函数指的该函数包含对外层函数作用域名字的引用(不是对全局作用域)
闭包函数:名称空间与作用域的应用+函数嵌套
def f1():x = 33333333333333333333def f2():print(x)f2()x=11111
def bar():x=444444f1()def foo():x=2222bar()foo()输出:33333333333333333333
思路:
调用的是函数foo(),函数foo()内的x=2222未被调用,调用了函数bar()
函数bar()内的x=444444未被调用,调用了函数f1()
函数f1()内定义了x,定义了函数f2(),函数f2()内输出x
函数f2()内未定义x,就去f1()中,找到了x=33333333333333333333
最后函数f1()调用了函数f2(),输出33333333333333333333
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def f1():x = 33333333333333333333def f2():print('函数f2:',x)return f2f=f1() # 调用f1(),返回函数f2(),输出:函数f2:33333333333333333333def foo():x=5555f()foo() # 调用foo(),foo()内调用了f(),也就是调用了f2,输出:函数f2:33333333333333333333输出:函数f2: 33333333333333333333
三:为何要有闭包函数 ==》 闭包函数的应用
两种为函数体传参的方式:
方式一:直接把函数体需要的参数定义成形参
def f2(x):print(x)f2(1)
f2(2)
f2(3)输出:
1
2
3
方式二:使用闭包函数
def f1(x): # x=3# x=3def f2():print(x)return f2x=f1(3)
print(x)
x()输出:
<function f1.<locals>.f2 at 0x02F734A8>
3
python教程:闭包函数相关推荐
- python教程闭包_Python教程 闭包的特性
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- python的闭包函数
python的闭包 首先python闭包的作用,一个是自带作用域,另一个是延迟计算. 闭包是装饰器的基础. 闭包的基本形式: -------------------------- def 外部函数名( ...
- python中闭包函数_Python的闭包问题(关于内嵌函数引用闭包函数的变量问题)
一.闭包: 记得:闭包的特性就是:内嵌函数会保存它引用的外围函数的变量值. 闭包概念:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数和被引用的变量等 ...
- Boost.Python教程:函数
在本章中,我们将更详细地介绍Boost.Python驱动的函数.我们将看到一些工具,可以将C ++函数暴露给Python,避免潜在的pifall,例如悬空指针和引用. 我们还将看到一些工具,使我们更容 ...
- python教程:函数参数中默认值及重要警告
最有用的形式是对一个或多个参数指定一个默认值.这样创建的函数,可以用比定义时允许的更少的参数调用,比如: def ask_ok(prompt, retries=4, reminder='Please ...
- python教程:函数递归与生成器教程
一.什么是递归 如果函数包含了对其自身的调用,该函数就是递归的.递归做为一种算法在程序设计语言中广泛应用,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的 ...
- Python教程:函数对象与函数嵌套
一:函数对象 精髓:可以把函数当成变量去用 1.可以赋值 # func=内存地址 def func():print('from func')f=func # 函数func赋值给变量f print(f, ...
- Python教程:函数多个返回值与丢弃返回值
1.函数多个返回值 python的函数支持返回多个值.返回多个值时,默认以tuple的方式返回. 例如,下面两个函数的定义是完全等价的. def f():return 1,2def f():retur ...
- python 获取闭包函数的参数
def f2():a = 2b = 3return lambda k: a * b * k g2 = f2()print(g2.__closure__)a2 = g2.__closure__[0] b ...
- python中match函数的用法_pythonre.match函数是什么,了解pythonmatch函数的使用
与之前的文章<Python正则表达式详解,告诉你Python正则表达式是什么?>联动,本文讲述了python re.match函数的使用方法,并附带了表格与实例来解析Python matc ...
最新文章
- MySQL 5.6通过MMM实现读写分离的高可用架构
- IPSEC传输模式和隧道模式的区别
- python切片语法-Python切片详解
- Python中集合的介绍以及常见操作
- CAN2.0的标准帧和扩展帧格式
- 我已经把它摸的透透的了!!!Spring 动态数据源设计实践,全面解析
- java main传入参数_向java的main()传入大量参数
- pythoncsv格式清洗与转换_Python中 CSV格式清洗与转换的实例代码
- 数据结构与算法 php pdf,数据结构与算法之美(完结)云盘分享_IT教程网
- db9针232接口波特率标准_RS-232串口使用的DB9螺钉,螺纹规格是什么?
- 云课堂计算机测试答案,2020智慧职教云课堂计算机应用答案完整满分章节测试答案...
- 阿里云 ECS迁移数据至腾讯云云服务器
- 天正菜单栏不见了怎么显示出来_天正建筑菜单栏不见了怎么调出来? _ 设计学院_设计软件教程自学网...
- 利用Scrapy编写“1024网站种子吞噬爬虫”,送福利
- PTA 7-2 USB接口的定义(接口、接口变量、接口数组)
- Mac下的spotlight无法搜索本地资源的解决办法
- Matlab 颜色、线型、标记符号和希腊字母表
- 祝福你们,中国80后 (俞明洪)
- 读吴军老师的《智能时代》有感
- c++枚举在跨平台下的陷进