#Python闭包(closure)
#闭包的理解: 闭包能够将一个方法作为一个变量去传递
# 可以让局部变量的值始终保持在内存中
# python中的闭包通过函数嵌套, 返回函数对象来实现(和js类似)
# 缺点: 过度使用闭包会导致性能下降
# 优点: 代码展示更优雅, 更符合逻辑,
def counter(a=0):
count = [a] #这里不能使用int, 否则无法自增
def add_one():
count[0] += 1
return count[0]
return add_one
c1 = counter(5) #返回的c1是函数对象, 调用的时候需要带上括号
print(c1()) #6
print(c1()) #7
#这里的counter函数之所以不用全局变量, 是因为在复杂程序中, 全局变量会有很多麻烦
#命名冲突, 垃圾回收
# a * x + b = y 计算y
def a_line(a, b):
def arg_y(x): #这里可以使用lambda来改写 return lambda x: a*x + b
return a * x + b
return arg_y
line1 = a_line(3, 5)
print(line1(10))
line2 = a_line(4, 7)
print(line2(10))
#这里的python闭包函数和java匿名内部类相比, 优势是可以在定义函数时, 可以传递可变参数
Python闭包
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 当内部函数对外部函数的变量(非全局变量)进行了引用,则内部函数被称之为闭包 举个栗子: 调用: c = outte...