Python下的闭包函数

# ## 闭包函数
"""
概念:
    内函数使用了外函数的局部变量
    并且外函数把内函数返回出来的过程,叫做闭包
    这个内函数叫做闭包函数
"""


# 示例
# 1、基本语法

def func_1():
    father = "100"

    def func_2():
        print("这辆汽车的造价是: {}万元.".format(father))

    return func_2


func = func_1()
print(func)
func()  # => func_2()

# 2、闭包函数升级
def func_3():
    jiejie = "马毅"
    meimei = "马贰"
    money = 1000

    def jiejie_hobby():
        nonlocal money
        money -= 500
        print("买名牌包包,名牌手表,名牌大衣,名牌鞋子......家里的钱还剩下{}".format(money))

    def meimei_hobby():
        nonlocal money
        money -= 400
        print("买了一辆小汽车,家里的钱还剩下{}".format(money))

    def big_guanjia():
        return jiejie_hobby, meimei_hobby

    return big_guanjia


func_res = func_3()
print(func_res)
tup_res = func_res()
print(tup_res)
tup_res[0]()    # jiejei
tup_res[1]()    # meimei

# 3、闭包函数扩展
# 3.1、 闭包特点

def outer(val):
    def inner(num):
        return num + val

    return inner


func_4 = outer(10)
res = func_4(8)
print(res)

# 3.2、闭包的意义
def clickfunc():
    global clichnum
    clichnum += 1
    print(clichnum)


# 模拟点击操作,点击一次就调用一次
clickfunc()
clickfunc()
clickfunc()
clickfunc()

# 3.3、用闭包函数进行改造
def clickfunc():
    x = 0

    def func():
        nonlocal x
        x += 1
        print(x)

    return func


clickfunc2 = clickfunc()
clickfunc2()
clickfunc2()
clickfunc2()

 

posted @ 2020-11-16 20:53  一个苦逼的运维人  阅读(133)  评论(0编辑  收藏  举报