闭包函数

一、闭包函数

闭包:被函数包裹的函数,定义在函数内部的函数

def func():
    name = 'eva'
    def inner():
        print(name)

二、闭包函数的应用场景和意义

2.1 应用场景

# 闭包中使用的变量可以被外层函数所传递,外层函数可以为闭包函数传递参数

def outter(num):
    def inner():
        print(num)     # 10
    inner()  
def t():
    count = 10
    outter(count)
t()

2.2 闭包函数的意义

由于有了作用域的关系,我们就不能拿到函数内部的变量和函数了。

我们都知道函数内的变量我们要想在函数外部用,可以直接返回这个变量,那么如果我们想在函数外部调用函数内部的函数呢?

是不是直接就把这个函数的名字返回就好了?

这才是闭包函数最常用的用法

def func():
    name = 'eva'
    def inner():
        print(name)
    return inner

f = func()
f()

三、判断是否是闭包函数

#输出的__closure__有cell元素 :是闭包函数
def func():
    name = 'eva'
    def inner():
        print(name)
    print(inner.__closure__)
    return inner

f = func()
f()

#输出的__closure__为None :不是闭包函数
name = 'egon'
def func2():
    def inner():
        print(name)
    print(inner.__closure__)
    return inner

f2 = func2()
f2()

 

posted on 2020-05-15 23:16  软饭攻城狮  阅读(104)  评论(0编辑  收藏  举报

导航