zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    自愿如此 四 内观
    自愿如此· 三 不做解释
    自愿如此·序言
    排序算法 (08.堆排序)
    2.2 ES6 解构赋值
    2.1 ES6 let 与 const
    ES6学习 (01. 内容概况)
    vue 技术栈进阶 (07. ajax 请求实战)
    vue技术栈进阶(06.状态持久化, 严格模式, 数据双向绑定问题)
    vue技术栈进阶(05. mutations, actions)
  • 原文地址:https://www.cnblogs.com/small-wei/p/13987107.html
Copyright © 2011-2022 走看看