Discuss / Python / 闭包

闭包

Topic source

以前学swift的时候一直不理解明白闭包 现在想了下就是用来生成特定配置函数的函数 最简单就是 def f1(a): def b(): return a return b

f = f1(5) #生成一个返回5的函数 f2 = f1(10) #生成一个返回10的函数 print(f() + 5) #得出10 print(f() + 5) #得出15

所以不用重复写不同的函数来满足类似算法的函数 不知道这个理解方式有没有错

cqlyzz

#2 Created at ... [Delete] [Delete and Lock User]

这应该是没有闭包吧

廖雪峰

#3 Created at ... [Delete] [Delete and Lock User]

有闭包,但是用处不大

改成

def f1(a):
    def b():
        return N(a) # 算阶乘 
    return b

这样实现的就是延迟计算

f = f1(1000) # 还没计算出 1000!
if needCalculate():
    r = f() # 现在计算

  • 1

Reply