Python中闭包的简单示例是怎样的?

2026-05-28 20:171阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计629个文字,预计阅读时间需要3分钟。

Python中闭包的简单示例是怎样的?

------------------% 首先根据实例,体会闭包的效果 ------------------% 定义闭包:def foo(x): a=[0] def bar(y): a[0] +=x + y print(a[0]) return a[0] return bar 使用闭包:f=foo(1) f(2)

------------------

首先根据实例, 体会一下闭包的效果

------------------


定义闭包:

def foo(x):
a = [0]
def bar(y):
a[0] = a[0]*x + y
print(a[0])
return a[0]

return bar

使用闭包


f=foo(1)
f(2) #print 2
f(2) #print 4
f(2) #print 6

------------------

闭包要达到的目的

------------------

普通函数, 输入给定后, 输出总是一定的, 比如add(1,2), 无论调用多少次, 结果永远是3。

闭包则不同, 在函数在执行后, 有能力保持函数执行后的环境, 为下次闭包的执行营造一个新的环境.

典型的为了闭包而闭包的情形有:

Python中闭包的简单示例是怎样的?

1. 看起来像闭包, 实际上并不具持久化的代码,.

2. 看起来像闭包, 实际上却使用了global变量来支持持久化.


------------------

闭包的意义

------------------

一句话,类是包含行为的数据,闭包是有数据的行为。一般情况下,我们完全可以使用全局变量+函数来实现持久化,或者写个类,可读性比闭包好多了。

闭包的作用, 摘自www.gracecode.com/posts/2385.html

setTimeout/setInterval

回调函数(callback)

事件句柄(event handle)


------------------

闭包模板

------------------

##闭包的定义模板

def foo(x):

a = [0] #声明一个local变量来支持持久化, 因为python2不支持nonlocal, 所以这里用了list, 而不是a=0

def bar(y):

a[0] = a[0]*x + y #修改local变量的值, 因为python2不支持nonlocal, 所以赋值给了a[0]而不是a

print(a[0])

return a[0] #内部函数一定要返回持久化变量, 这里可返回a[0]或a


return bar #外部函数一定是返回内部函数



##闭包的使用模板

f=foo(1) #定义一个闭包, 就像实例化一个类一样, 参数要符合外部函数签名

f(2) #执行闭包, 就像调用某个函数一样, 参数要符合内部函数签名





本文共计629个文字,预计阅读时间需要3分钟。

Python中闭包的简单示例是怎样的?

------------------% 首先根据实例,体会闭包的效果 ------------------% 定义闭包:def foo(x): a=[0] def bar(y): a[0] +=x + y print(a[0]) return a[0] return bar 使用闭包:f=foo(1) f(2)

------------------

首先根据实例, 体会一下闭包的效果

------------------


定义闭包:

def foo(x):
a = [0]
def bar(y):
a[0] = a[0]*x + y
print(a[0])
return a[0]

return bar

使用闭包


f=foo(1)
f(2) #print 2
f(2) #print 4
f(2) #print 6

------------------

闭包要达到的目的

------------------

普通函数, 输入给定后, 输出总是一定的, 比如add(1,2), 无论调用多少次, 结果永远是3。

闭包则不同, 在函数在执行后, 有能力保持函数执行后的环境, 为下次闭包的执行营造一个新的环境.

典型的为了闭包而闭包的情形有:

Python中闭包的简单示例是怎样的?

1. 看起来像闭包, 实际上并不具持久化的代码,.

2. 看起来像闭包, 实际上却使用了global变量来支持持久化.


------------------

闭包的意义

------------------

一句话,类是包含行为的数据,闭包是有数据的行为。一般情况下,我们完全可以使用全局变量+函数来实现持久化,或者写个类,可读性比闭包好多了。

闭包的作用, 摘自www.gracecode.com/posts/2385.html

setTimeout/setInterval

回调函数(callback)

事件句柄(event handle)


------------------

闭包模板

------------------

##闭包的定义模板

def foo(x):

a = [0] #声明一个local变量来支持持久化, 因为python2不支持nonlocal, 所以这里用了list, 而不是a=0

def bar(y):

a[0] = a[0]*x + y #修改local变量的值, 因为python2不支持nonlocal, 所以赋值给了a[0]而不是a

print(a[0])

return a[0] #内部函数一定要返回持久化变量, 这里可返回a[0]或a


return bar #外部函数一定是返回内部函数



##闭包的使用模板

f=foo(1) #定义一个闭包, 就像实例化一个类一样, 参数要符合外部函数签名

f(2) #执行闭包, 就像调用某个函数一样, 参数要符合内部函数签名