当前位置: 首页> 教育> 培训 > 设计非常漂亮的网站_企业建站报价_爆款采集推广引流软件_哪里可以建网站

设计非常漂亮的网站_企业建站报价_爆款采集推广引流软件_哪里可以建网站

时间:2025/8/21 21:48:52来源:https://blog.csdn.net/Wayne_zzx1112233/article/details/144890391 浏览次数:0次
设计非常漂亮的网站_企业建站报价_爆款采集推广引流软件_哪里可以建网站

一、闭包的定义与实例

1.1 闭包的定义与介绍

        在Python实际开发过程中,调用函数过程中,函数内定义的变量都销毁了。此时由于业务需求可能需要保存函数内的这个变量,调用这个变量进行一系列操作。为了解决这个问题,引入闭包这个概念。

闭包的定义:

        在函数其那套的壳体下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数。这个使用外部函数变量的内部函数的过程称为闭包

1.2 闭包的构成条件

  • 通过闭包的定义,此时的闭包形成条件如下:
  • 函数嵌套(函数里再次定义函数)。
  • 内部函数使用了外部函数的变量(包括外部函数的参数)。
  • 外部函数返回了内部函数。

1.3 闭包实例

# 定义一个外部函数
def func_out(num1):# 定义一个内部函数def func_inner(num2):# 内部函数使用了外部函数的变量(num1)result = num1 + num2print("结果是:", result)# 外部函数返回了内部函数,这里返回的内部函数就是闭包return func_inner# 创建闭包实例    
f = func_out(1)
# 执行闭包
f(2)
f(3)

运行结果如下: 

结果是:3

结果是:4

        通过以上结果,不妨可以看出, 由于这里使用的闭包的设计理念,每次调用程序时都保存了外部函数内的变量num1,此时的赋值都是独立且不互相影响的。综上所述,闭包可以保存外部函数内的变量,不会随着外部函数的调用结束而销毁。

1.4 闭包语法 

#外部函数
def test1(a):b = 10#内部函数def test():#内部函数使用了外部函数的变量或者参数print(a,b)return test2

tips:当返回的内部函数使用了外部函数的变量就形成了闭包;闭包可以对外部函数的变量进行保存;修改闭包内使用的外部函数变量使用nonlocal关键字来完成。

二、装饰器的定义与实例

2.1 装饰器的定义

        装饰器是一个设计模式,通常用于不修改函数内容时增加函数功能的场景下。在Python中,装饰器通常用于日志记录、性能测试、十五处理等场景。装饰器的本质是一个函数,它接受一个函数作为参数并返回一个新的函数。

2.2 装饰器的语法糖

  Python中的装饰器可以通过@符号来简介地运用,实例如下:

def check(fn):def proxy():print("请先登录!")fn()return proxy@check
def comment():print("该商品好!")
comment()

装饰器的执行流程:

  • @ check将comment函数作为参数传递给check函数。
  • check函数返回一个新的函数proxy,它在调用comment之前增加了打印功能。
  • 当调用comment()时,实际上是调用了proxy函数,,首先打印”请先登录!“,然后调用原始的comment函数。

三、闭包与装饰器结合

        闭包和装饰器可以结合使用,以便于实现更复杂的功能。即:可以使用闭包来创建具有私有状态的装饰器

实例:init_conversation函数返回了一个内部函数get_conversation的引用,这个内部函数记住了info变量的值。每次调用init_conversation都会创建一个新的闭包,它捕获不同的info值。

def init_conversation(info):def get_conversation(name):print(name + ":" + info)return get_conversation  # 返回内部函数的引用final_conversation = init_conversation("不在你回我干嘛!")
final_conversation("张三")  # 打印 "张三:不在你回我干嘛!"final_conversation = init_conversation("不想搭理你!")
final_conversation("李四")  # 打印 "李四:不想搭理你!"

四、总结

        闭包和装饰器是Python中强大的功能,它们允许我们在不修改原始函数代码的情况下增加新的行为。闭包通过捕获外部函数的变量来实现状态的保持,而装饰器则通过函数包装来增强函数功能。理解并掌握这两种技术,可以帮助我们编写更加模块化、可重用和易于维护的代码。        

关键字:设计非常漂亮的网站_企业建站报价_爆款采集推广引流软件_哪里可以建网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: