zoukankan      html  css  js  c++  java
  • python之闭包函数及匿名函数和三元运算

    1、闭包函数

    # 互相嵌套的函数,如果内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程,叫做闭包;里面的内函数就是闭包函数。
    ​
    # 基本语法
    def func():
        name = "bajie"
        def inner():
            print(name)
        return inner
    res = func()
    res()
    # 复杂版本
    def func():
        money = 1000
    ​
        def outer():
            nonlocal money
            money -= 300
            print(money)
        def inner():
            nonlocal money
            money -= 500
            print(money)
        def going():
            return (outer,inner)
        return going
    ​
    # 第一次执行函数
    going_func = func()
    res = going_func()     # 拿到going_func的返回值 (outer,inner)
    res[0]()               # 执行outer         money == 700
    res[1]()               # 执行inner         money == 200
    res[0]()               # 再次执行outer     money == -100
    res[1]()               # 再次执行inner     money == -600
    ​
    ​
    # 第二次执行函数(   函数名().__closure__    ,  cell_contents  )
    # 获取闭包函数的使用变量
    res1 = func().__closure__       # 如果是闭包,拿到 闭包函数 going 的返回值
    # 用来获取单元格对象当中的闭包函数
    res1[0].cell_contents()         # money == 500
    

      

    1.1闭包的特征

    # 内函数使用了外函数的局部变量,该变量与闭包函数发生绑定,延长了该变量的生命周期
    # 闭包的意义:闭包可以优先使用外函数中的变量,并对闭包中的值起到了封装保护的作用.外部无法访问
    # 示例一
    def func():
        num = 0
        def inner():
            nonlocal num
            num += 1
            return print(num)
        return [inner(),inner(),inner(),inner()]
    ​
    res = func()
    ​
    # 示例二
    def func():
        num = 0
        def inner():
            nonlocal num
            num += 1
            return print(num)
        return inner
    ​
    res = func()
    res()
    res()
    res()
    res()
    

      

    2、三元运算

    # 格式 ---> 真值 if 条件 else 假值
    # 示例一
    num = 10
    if num > 0 :
        print("True")
    else:
        print("False")
        
    # 三元运算表达式
    num = 10
    print("True" if num > 0 else "False" )
    

      

    3、匿名函数(lambda)

    # 格式 ---> lambda 参数 : 返回值
    # 示例一
    def func(n):
        return type(n)
    print(func(10))
    ​
    # lambda 表达式
    print(lambda n : type(n))
    

      

    3.1 lambda + 三元运算

    # 示例一
    def func(n):
        if n % 2 == 0:
            return "偶数"
        else:
            return "奇数"
            
    示例二     
    print(lambda n : "偶数" if n % 2 == 0 else "奇数")
    

      

     

  • 相关阅读:
    Linux学习-汇总
    前端学习-汇总
    人生苦短,我用python
    python_面试题_DB相关问题
    企业应用学习-git学习
    python基础-并发编程之I/O模型基础
    python_面试题_HTTP基础相关问题
    python_面试题_TCP的三次握手与四次挥手问题
    好的RESTful API的设计原则
    CSP-S2021 游记
  • 原文地址:https://www.cnblogs.com/zhoulangshunxinyangfan/p/13347295.html
Copyright © 2011-2022 走看看