初识闭包

'''
闭包的概念:函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包
闭包是概念,不是某种函数类型,是一种特殊的函数调用
闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁。
'''
'''
函数里面可以在定义函数,那么函数里面定义的函数可以在外面调用吗?
如果可以的话,怎么做呢?
'''
# 正常嵌套函数使用举例:
def func():
    print("这是func在调用")
    def func1():
        print("这是func1在调用")
    func1() #这个调用与def func1处于同一级,调用func1()
func()
# 这是func在调用
# 这是func1在调用

# 闭包:函数里面嵌套函数,外层函数返回里层函数,注意是返回,而不是在里面直接调用.
def func():
    def func1():
        return "hello"
    return func1 #注意不要写括号,因为加了括号就是调用,我们这里需要返回的是函数体.
func() #这样写运行没有任何输出,因为现在的func()相当于在使用func1返回的函数体,即返回func1函数体.
# func()相当于func1,就是一个函数对象,要调用很简单func()()
func()() #此时还是没有输出,为什么呢?注意是返回值的形式,需要去接收它.
a = func()() #将返回值赋给变量a
print(a)

#------------里面还可以写更多函数------------------------------------
def func():
    def func1():
        return "Hello"
    def func2():
        return "LuXi"
    def func3():
        return "Good"
    return func2 #注意这里想在外面使用哪一个,这里就返回哪一个.
func()()
a = func()()
print(a) #结果为func2函数的返回值LuXi

#------闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁。-------------------
def func():
    a = 100
    def func1():
        return a+a
    return func1
b = func()()
print(b) #结果为200,验证闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁.

 

posted @ 2019-03-25 13:09  上古战神  阅读(103)  评论(0编辑  收藏  举报