IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python---闭包 -> 正文阅读

[Python知识库]Python---闭包

1.11.3闭包

# 闭包
# 在函数中提出的概念:
''':cvar
条件:
1. 外部函数中定义了内部函数
2. 外部函数是有返回值
3. 返回的值:内部函数名
4. 内部函数引用了外部函数的变量

格式:
def 外部函数():
    ...
    def 内部函数():
        ...
    return 内部函数
'''


def func():
    a = 100

    def inner_func():
        b = 99
        print(a, b)

    return inner_func


# print(a)
# inner_func()

x = func()
print(x)
# x就是内部函数,x()就是调用函数
x()
# 闭包
def func(a, b):
    c = 10

    def inner_func():
        s = a + b + c
        print("sum是:", s)

    return inner_func()


# 调用func
ifunc = func(6, 9)  # ifunc就是inner_func  ifunc=inner_func

# 调用返出来的内部函数
ifunc()

# 闭包
''':cvar
保存返回闭包时的状态(外层函数变量)
闭包有什么缺点呢?
闭包的缺点1. 作用域没有那么直观
闭包缺点2. 因为变量不会被垃圾回收所以有一定内存占用问题

闭包作用:1.可以使用同级的作用域
闭包作用:2.读取其他元素的内部变量
闭包作用:3.延长作用域

闭包总结:
1.闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成
2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存
3.闭包的好处,使代码变得简洁,便于阅读代码
4.闭包时理解装饰器的基础
'''


def func(a, b):
    c = 10

    def inner_func():
        s = a + b + c
        print("sum是:", s)

    return inner_func


# 调用func
ifunc = func(6, 9)  # ifunc就是inner_func  ifunc=inner_func
ifunc1 = func(2, 8)
# 调用返出来的内部函数
print(ifunc)
print(ifunc1)
ifunc()
ifunc1()
# 闭包的应用
def func():
    a = 100

    def inner_func1():
        b = 90
        s = a + b
        print(s)

    def inner_func2():  # define
        inner_func1()
        print('------>inner_func2', a)
        return 'hello'

    return inner_func2  # <function func.<locals>.inner_func2 at 0x000001A0B2857430>


# 调用func

f = func()
print(f)
ff = f()  # inner_func()
print(ff)  # hello

# 计数器
def generate_count():
    container = [0]

    def add_one():
        container[0] = container[0] + 1 # [1]
        print('当前时第{}次访问'.format(container[0]))

    return add_one

# 内部函数就是一个计数器
counter = generate_count()
counter() # 第一次的访问
counter() # 第二次的访问
counter() # 第三次的访问

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:35:32  更:2021-11-14 21:36:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/31 6:09:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码