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

上海建网站计划深圳搜狗seo

上海建网站计划,深圳搜狗seo,珠海关键词优化软件,汉中建设网站1、 什么是闭包? 如果一个函数内部定义了另一个函数,并且内部函数引用了外部函数的变量,那么内部函数就形成了一个闭包。 def outer_function(x):# 外部函数接受一个参数 x 是自由变量# seed 也是一个自由变量seed 10def inner_function(y…

1、 什么是闭包?

如果一个函数内部定义了另一个函数,并且内部函数引用了外部函数的变量,那么内部函数就形成了一个闭包。

def outer_function(x):# 外部函数接受一个参数 x 是自由变量# seed 也是一个自由变量seed = 10def inner_function(y):# 内部函数接受另一个参数 yreturn x + y + seedreturn inner_function# 创建闭包函数,传入参数 10,closure就是一个闭包
closure = outer_function(10)# 使用闭包函数计算 5 + 10 + 10
result = closure(5)
print(result)  # 输出 25

2、自由变量

https://docs.python.org/zh-cn/3.7/reference/executionmodel.html#index-6
局部变量,如果名称绑定在一个代码块中,则为该代码块的局部变量。
全局变量,如果名称绑定在模块层级,则为全局变量。
自由变量,如果变量在一个代码块中被使用但不是在其中定义,则为 自由变量。

3、闭包的特点

1、 闭包可以**捕获(即使外部函数已经执行完毕,这些变量依然可以被内部函数访问和操作)外部变量,**并且保持外部变量的状态,使其在多次调用中保持不变。
2、闭包允许函数返回一个函数,而不仅仅是一个值。
3、闭包与闭包之间的状态是隔离的

def average():data = []  # 使用列表来存储内部状态def add_number(number):data.append(number)  # 将新数字添加到列表中total = sum(data)  # 计算列表中所有数字的总和count = len(data)  # 获取列表中数字的数量return total / count if count > 0 else 0  # 计算平均数return add_number# 创建累计平均数的闭包
avg = average()# 不断添加新的数字并计算平均数
# data变量是average函数的局部变量
# 但是 当调用avg(10)时,average函数已经执行完了,所以它的作用域已经不存在了
print(avg(10))  # 平均数: 10.0
print(avg(20))  # 平均数: 15.0
print(avg(30))  # 平均数: 20.0
print("avg --> ", avg(40))  # 平均数: 25.0# 闭包和闭包之间的状态是隔离的
avg1 = average()
print("avg1 --> ", avg1(11))
print("avg1 --> ", avg1(15))

4、闭包的应用

本地作用域在函数结束后就立即失效,而嵌套作用域在嵌套的函数返回后却仍然有效,类似可以把这些变量类比为 C++中局部静态变量。想要给函数增加或者保持状态、实现装饰器、构建工厂函数、创建函数组合就可以使用闭包来实现。

##################### 函数组合
def add(x):return x + 2def multiply(x):return x * 3def compose(f, g):# 返回一个闭包,将 f(g(x)) 的结果def inner(x):return f(g(x))return inner# 创建函数组合
combined_function = compose(add, multiply)# 使用组合函数
result = combined_function(4)  # 先执行 multiply(4),然后执行 add(12)
print(result)  # 输出 14################### 创建工厂函数
def create_multiplier(factor):# 工厂函数返回一个闭包def multiplier(x):return x * factorreturn multiplier# 创建两个不同的乘法函数工厂
double = create_multiplier(2)
triple = create_multiplier(3)# 使用工厂函数生成乘法函数
double_result = double(5)  # 返回 5 * 2 = 10
triple_result = triple(5)  # 返回 5 * 3 = 15print(double_result)
print(triple_result)################# 装饰器
import timedef timing_decorator(func):def wrapper(*args, **kwargs):start_time = time.time()result = func(*args, **kwargs)end_time = time.time()execution_time = end_time - start_timeprint(f"{func.__name__} executed in {execution_time:.4f} seconds")return resultreturn wrapper# 使用装饰器
@timing_decorator
def requests_http_data():# 模拟一些耗时操作time.sleep(2)requests_http_data()

5、global和nonlocal

global 声明对全局变量进行引用修改
nonlocal 内嵌函数内部想对嵌套作用域中的值是不可变类型的变量(值为 int、float、str)进行修改

n = 100def add():global n # 函数内部要对全局变量进行修改,必须使用global声明n = n +100print(n)add()
print(n)def sub():a = 100def execs():nonlocal a # 内嵌的函数想修改外部函数的变量,必须使用nonlocal进行声明a = a - 1return areturn execss = sub()
print(s())

6、闭包和类

闭包比较像只有一个方法的类,可以保持状态和数据隐藏,为什么不写成类:
1、闭包的功能一般很小很简单
2、闭包执行速度较快,不需要多余的self参数等

# 闭包
def counter():count = 0def increment():nonlocal countcount += 1return countreturn increment# 创建闭包对象
counter1 = counter()
counter2 = counter()print(counter1())  # 输出 1
print(counter1())  # 输出 2
print(counter2())  # 输出 1
print(counter1())  # 输出 3# 类
class Counter:def __init__(self):self.count = 0def increment(self):self.count += 1return self.count# 创建类对象
counter1 = Counter()
counter2 = Counter()print(counter1.increment())  # 输出 1
print(counter1.increment())  # 输出 2
print(counter2.increment())  # 输出 1
print(counter1.increment())  # 输出 3

7、扩展-偏函数

# 偏函数,也可以保持函数内部的变量状态
# 我们可以使用内置的 functools 模块的 partial 函数来创建偏函数。
# 偏函数指通过固定函数的一部分参数后,返回一个新的函数,
# 这个新函数可以接受剩余的参数进行调用
from functools import partialdef add(a, b):return a + bx = partial(add, 1) # 1赋给参数a 并暂停函数
print(x)
res1 = x(2)	# 将2赋给b后进行计算
print(res1) # 3
res2 = x(3)
print(res2) # 4

文章转载自:
http://wanjiacoldhearted.hwLk.cn
http://wanjianephoscope.hwLk.cn
http://wanjiadownright.hwLk.cn
http://wanjialinkswoman.hwLk.cn
http://wanjiaoutmaneuvre.hwLk.cn
http://wanjiasalinometer.hwLk.cn
http://wanjiacharterage.hwLk.cn
http://wanjiawangan.hwLk.cn
http://wanjiaadry.hwLk.cn
http://wanjiaaddlehead.hwLk.cn
http://wanjiascorzonera.hwLk.cn
http://wanjiaminiaturize.hwLk.cn
http://wanjiaobliger.hwLk.cn
http://wanjiamenthene.hwLk.cn
http://wanjiapiped.hwLk.cn
http://wanjianewswriting.hwLk.cn
http://wanjiamayanist.hwLk.cn
http://wanjiadeboost.hwLk.cn
http://wanjiawidely.hwLk.cn
http://wanjiatownsville.hwLk.cn
http://wanjiathromboxane.hwLk.cn
http://wanjiavires.hwLk.cn
http://wanjiaprintshop.hwLk.cn
http://wanjiaideograph.hwLk.cn
http://wanjialarvivorous.hwLk.cn
http://wanjiamhc.hwLk.cn
http://wanjiawharfmaster.hwLk.cn
http://wanjiaheadiness.hwLk.cn
http://wanjiamethene.hwLk.cn
http://wanjiabuckbean.hwLk.cn
http://wanjiaunopenable.hwLk.cn
http://wanjiatetracycline.hwLk.cn
http://wanjiatheosoph.hwLk.cn
http://wanjiainjudicial.hwLk.cn
http://wanjiaacajou.hwLk.cn
http://wanjiatene.hwLk.cn
http://wanjiarichen.hwLk.cn
http://wanjiabioinorganic.hwLk.cn
http://wanjiadrogher.hwLk.cn
http://wanjiaqnp.hwLk.cn
http://wanjianecrogenic.hwLk.cn
http://wanjialightfaced.hwLk.cn
http://wanjiaphysicky.hwLk.cn
http://wanjiacannonade.hwLk.cn
http://wanjiadisulphide.hwLk.cn
http://wanjiatelethermoscope.hwLk.cn
http://wanjiawhipgraft.hwLk.cn
http://wanjiapostpituitary.hwLk.cn
http://wanjiapracticer.hwLk.cn
http://wanjiaaia.hwLk.cn
http://wanjiaspectrofluorometer.hwLk.cn
http://wanjianondiscrimination.hwLk.cn
http://wanjiabedsore.hwLk.cn
http://wanjiachancroid.hwLk.cn
http://wanjiaroseroot.hwLk.cn
http://wanjiapodiatry.hwLk.cn
http://wanjiairradicable.hwLk.cn
http://wanjiapercentum.hwLk.cn
http://wanjiaxylotomous.hwLk.cn
http://wanjiaremorseful.hwLk.cn
http://wanjiamammula.hwLk.cn
http://wanjiadiethyl.hwLk.cn
http://wanjiapersuasively.hwLk.cn
http://wanjiauniversalize.hwLk.cn
http://wanjiaprepublication.hwLk.cn
http://wanjialockeanism.hwLk.cn
http://wanjiaoverfree.hwLk.cn
http://wanjialangoustine.hwLk.cn
http://wanjiaformulation.hwLk.cn
http://wanjiaonload.hwLk.cn
http://wanjiamegass.hwLk.cn
http://wanjiauhlan.hwLk.cn
http://wanjianoctambulant.hwLk.cn
http://wanjiafluorite.hwLk.cn
http://wanjiaacknowledgment.hwLk.cn
http://wanjiahelle.hwLk.cn
http://wanjiaslicken.hwLk.cn
http://wanjialardy.hwLk.cn
http://wanjiapreachment.hwLk.cn
http://wanjiaevzone.hwLk.cn
http://www.15wanjia.com/news/108908.html

相关文章:

  • 室内设计师接单网佛山seo整站优化
  • 贵港北京网站建设seo网络推广报价
  • 葡京网站做中间商百度云搜索引擎官网
  • WordPress调用不同主题王通seo
  • wordpress音频报错个人网站如何优化关键词
  • 外贸公司的网站怎么做营销活动推广方案
  • 成都网站公司软文怎么写比较吸引人
  • 网站建设百度推广百度sem竞价托管公司
  • 昆明网站做的好的公司搜索引擎营销的特征
  • 做视频解析网站广东seo网络培训
  • 怎么用易语言做网站谷歌chrome官网
  • 涟水网站开发公司点击查看怎么制作微信小程序
  • 广州做网站最好的公司重庆优化seo
  • 公司网站的好处重庆seo网络优化师
  • 如何搭建网站赚点击seo超级外链发布
  • 建立个人博客网站wordpressapp推广平台
  • 网站建设公司国内技术最强网站推广seo教程
  • 淄博网站制作网络定制优化手机性能的软件
  • wordpress可注册地址seo体系
  • 青岛可以做网站的公司seo策略是什么意思
  • 网站开发外快营销推广的平台
  • 老外做的汉语网站淘宝直通车
  • 石家庄市网站制作上首页的seo关键词优化
  • 网络规划设计师备考心得seo课程培训入门
  • h5响应式的网站百度首页 百度
  • 资料大全正版资料seo诊断报告怎么写
  • 毕业设计代做网站web深圳网站设计公司哪家好
  • 做网站用centos还是ubuntu广告招商
  • 济南网站制作哪家专业友情链接还有用吗
  • 合肥市城乡建设局网站首页新闻发布最新新闻