zoukankan      html  css  js  c++  java
  • 【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)

  • 相关阅读:
    Java设计模式之依赖倒置原则
    windows 下安装apache 遇到的问题
    Java序列化相关
    批量插入————优化
    接口相关
    Redis使用及工具类
    面试回顾——kafka
    面试回顾——List<T>排序
    Java面试——线程池
    面试回顾——session相关
  • 原文地址:https://www.cnblogs.com/JodyJoy1201/p/13550701.html
Copyright © 2011-2022 走看看