• 【Python学习日记】B站小甲鱼:内嵌函数 闭包 和 lambda表达式


    global关键字

    在函数内部使用 global关键字可以修改并使用局部变量为全局变量

    内嵌函数(内部函数)  python是支持函数的嵌套的,下面的程序会执行fun1()和fun2()的功能

    def fun1():
        print('fun1被调用')
        def fun2():
            print('fun2被调用')
        fun2()
    fun1()

    闭包  下面的程序打印FunX(8)(5)也是一样的结果

    def FunX(x):
        def FunY(y):
            return x*y
        return FunY
    i = FunX(8)
    print(i(5))

    如果在嵌套函数里要使用局部变量可以使用关键字 nonlocal 

    def FunX(x):
        def FunY():
            nonlocal x
            x *= x
            return x
        return FunY()
    
    print(FunX(5))

    匿名函数 lambda 以下两个程序是等价的

    def ds(x):
        return 2*x +1
    print(ds(5))
    
    g = lambda x: 2 * x+1
    print(g(5))

    下面这两个程序也是等价的

    def add(x,y):
        return x+y
    add(4,5)
    
    g =lambda x,y: x+y
    print(g(3,4))

    两个比较牛逼的BIF

    过滤器filter()映射map()

    filter(函数,序列) 把参数作为函数的实际参数,把返回true的函数列成新的列表 函数的功能是返回偶数

    def odd(x):
        return x%2
    temp = range(10)
    show = filter(odd,temp)
    print(list(show))

    用lambda函数改写上面那个程序就是

    show = filter(lambda x:x%2,range(10))
    print(list(show))

    map(函数,序列) 将序列中的每一个元素作为函数的参数进行加工,直到全部加工完毕返回新的序列

    print(list(map(lambda x:x*2,range(10))))

    上面这个函数返回(0,2,4,6,8,10,12,14,16,18,20)

  • 相关阅读:
    关于工作态度
    ajax请求链接加时间戳
    自动消失的提示效果
    表设计原则
    进度展示图
    freemarker时间格式化
    Java的Thread.currentThread().getName() 和 this.getName() 以及 对象.getName()区别???
    使用Github做服务器展示前端页面
    Spring的生命周期
    输入三个字符,从小到大的顺序输出这三个字符
  • 原文地址:https://www.cnblogs.com/JodyJoy1201/p/13550701.html
Copyright © 2020-2023  润新知