当前位置: 首页 > wzjs >正文

企业网站建设 英铭唐山建设信息网站

企业网站建设 英铭,唐山建设信息网站,会员管理系统设计,wordpress为什么被墙一、背景知识 闭包(Closure) 是一个编程概念,在 Python 中是一个非常重要的特性。简单来说,闭包是一个函数,它能够记住并访问其外部作用域中的变量,即使外部函数已经执行完毕。 1. 详细解释: 在 Python 中,闭包指的是 一个函数嵌套在另一个函数中,并且内部函数引用…

一、背景知识

闭包(Closure) 是一个编程概念,在 Python 中是一个非常重要的特性。简单来说,闭包是一个函数,它能够记住并访问其外部作用域中的变量,即使外部函数已经执行完毕。

1. 详细解释:

在 Python 中,闭包指的是 一个函数嵌套在另一个函数中,并且内部函数引用了外部函数的变量。即使外部函数已经执行完毕,内部函数依然能够访问这些外部函数的变量,这些被引用的变量会“被记住”,这就是闭包的特性。

2. 形成闭包的条件

一个函数是闭包,必须满足以下三个条件:

  1. 有一个嵌套函数(即一个函数内部定义了另一个函数)。
  2. 内部函数引用了外部函数的变量
  3. 外部函数返回了内部函数,并且内部函数在外部函数执行完毕后依然可以访问外部函数的变量。

3. 闭包的例子

3.1 基本闭包示例:

def outer():x = 10  # 外部函数的局部变量def inner():print(x)  # 内部函数引用了外部函数的变量 xreturn inner  # 返回内部函数# 获取闭包函数
closure = outer()# 调用闭包函数
closure()

输出:

10

解释:

  1. outer 函数:它有一个局部变量 x,并定义了一个嵌套的 inner 函数。
  2. inner 函数:它引用了外部函数 outer 的变量 x
  3. 返回 innerouter 函数返回了 inner 函数,即 closure,即使 outer 函数已经执行完毕,closure 依然能够访问 x
  4. 执行 closure():调用 closure() 实际上是在执行 inner(),并打印了 x 的值。

3.2 为什么会形成闭包?

outer() 执行时,它会返回 inner()。此时 inner() 依然持有对 x 的引用(xouter 函数的局部变量)。即使 outer() 函数已经结束执行,inner() 依然可以访问 x,这就是闭包的特性。

4. 闭包的应用:生成器和装饰器

闭包在实际编程中有很多应用,特别是在以下两种场景中:

  1. 生成器函数:生成器函数利用闭包来记住每次迭代的状态。
  2. 装饰器:装饰器函数利用闭包来扩展或修改其他函数的行为,同时保留对原始函数的访问。

二、装饰器概述

在 Python 中,装饰器(Decorator)是一个非常强大的功能,它本质上是一个 函数,用于在不修改原始函数代码的情况下,为其添加额外的功能。简单来说,装饰器是一种 函数包装器,它可以用来在函数执行前后添加自定义逻辑。

1. 装饰器的工作原理

装饰器本质上是一个接受一个函数作为输入并返回一个函数的函数。它能够在不修改原始函数代码的情况下,为这个函数增加额外的功能。

1.1基本概念

  1. 接受一个函数作为参数:装饰器接收一个函数作为输入。
  2. 返回一个新函数:装饰器返回一个新的函数,通常是对原始函数的增强或修改版本。

1.2 举个简单的例子:

def my_decorator(func):def wrapper():print("Before the function is called.")func()  # 调用原始函数print("After the function is called.")return wrapperdef say_hello():print("Hello!")# 使用装饰器
decorated_say_hello = my_decorator(say_hello)# 调用装饰后的函数
decorated_say_hello()

输出:

Before the function is called.
Hello!
After the function is called.

在上面的代码中:

  • my_decorator 是一个装饰器,它接受 say_hello 函数作为参数,并返回一个新的 wrapper 函数。
  • wrapper 在调用 say_hello 之前和之后增加了额外的打印语句。

1.3 使用 @ 语法糖

在 Python 中,你可以通过 @ 语法糖来简化装饰器的使用,避免显式地将原函数传递给装饰器。

@my_decorator
def say_hello():print("Hello!")# 直接调用装饰后的函数
say_hello()

输出和之前一样:

Before the function is called.
Hello!
After the function is called.

2. 装饰器的实际应用

装饰器通常用于以下几个场景:

  1. 日志记录:记录函数的执行日志。
  2. 权限验证:在执行函数之前检查用户是否有权限。
  3. 缓存:缓存函数的计算结果,以提高效率。
  4. 计时:测量函数执行的时间。

三、示例分析

1 装饰器语法糖

python提供了@符号作为装饰器的语法糖,使我们更方便的应用装饰函数。但使用语法糖要求装饰函数必须return一个函数对象。因此我们将上面的func函数使用内嵌函数包裹并return。

1.1 函数装饰器

(1)不带参数装饰器,不带参数函数

def use_logging(func):print(f"传入函数名称: {func.__name__}")def _deco():print("%s is running" % func.__name__)func()return _decoprint("1" * 20)@use_logging
def bar():
http://www.dtcms.com/wzjs/828996.html

相关文章:

  • 温州网站建设模板响水网站制作公司
  • 统计局网站集约化建设方案网站的网站制作
  • 受欢迎的网站建设案例北京专业做网站
  • 网站快速排名服务食品网站建设 网站定制开发
  • 网站诊断从哪里开始左右左右网站
  • 做单本小说网站怎么样php小程序开发完整教程
  • 云主机建设网站公司网站设计制作
  • 手机端网站html好看的单页模板网站开发项目报告
  • 仙桃建设网站石家庄广告制作公司
  • 长安营销型网站建设公司网站域名的设计
  • 网站打开速度与服务器手表网站海马300米潜水表
  • 如何做响应式的网站网站开发设计
  • 慈溪企业网站建设河南郑州做网站h汉狮
  • 志愿者网站 建设方案做网站的设计流程
  • 株洲网站制作建设百度识别图片找图
  • flash 网站引导页如何做好公司网站
  • 东莞网站空间如何免费开自己的网站
  • 酒店宾馆型网站开发做旅游网站的工作流程图
  • 东营市住房和城乡建设管理局网站安徽湖滨建设集团网站
  • 网站设计验收网站建设费一般多少
  • 学校网站建设介绍范文招标代理公司加盟合作
  • 网站建设服务包含内容山东和城乡建设厅网站
  • 活动网站免费的网站软件正能量推荐
  • 南宁seo网站推广服务建设部网站一级开发资质
  • 大会的网站架构wordpress挖
  • 广州海珠建网站的公司如何自己开发一款app
  • wordpress旅游类网站企业网组建
  • 济宁建设网站首页淘宝联盟+做网站
  • 网站文章排版营销型网站建设知识
  • 万网域名怎么绑定网站销售易crm官网