• python进阶(二)~~~函数进阶


    函数进阶

    1、递归函数:在函数体中调用自身;一定要设置退出的边界条件;

    def func_add(i):
        if i==1:
            return i
        res=i+func_add(i-1)
        return res
    print(func_add(3))

      print(sys.getrecursionlimit())  # 查看递归边界,超出时会报错

      sys.setrecursionlimit(1000)  # 手动设置递归边界

      递归函数存在大量的重复计算数据,使用缓存可以保留上次计算的结果,大大节省执行时间。

    from functools import lru_cache
    
    @lru_cache(maxsize=128,typed=False)
    def func_add(i):
        if i<=2:
            return 1
        res=func_add(i-1)+func_add(i-2)
        return res
    print(func_add(100))

    2、纯函数

      函数的返回值只与函数内部参数有关,不受外部环境(如全局变量)影响;

           函数调用时不会产生副作用,例如改变外部环境(如全局变量,文件读写);

      相同的输入保证有相同的输出;

      常用的内置函数:map、filter、zip 

    def func_map(n):
        return n*1000/3
    res=map(func_map,[1,2,3,4]) #map(fun, li): 第一个参数为函数,第二个参数为可迭代对象;对可迭代对象中的每个元素当做参数传入fun函数中批量处理并返回
    print(list(res))
    
    #过滤器
    def func_filter(n):
        return n>=5
    res2=filter(func_filter,[1,2,3,4,6,7])
    print(list(res2))
    
    #聚合打包
    title=['name','age','sex']
    data=['musen','18','']
    num=[1,2,3]
    res3=zip(title,data)  
    print(dict(res3))  # 整合为字典
    res4=zip(title,data,num)  # 还可接收多个可迭代对象,整合,以最短长度为准

    3、匿名函数

      匿名函数格式:  lambda 参数:表达式(返回值),匿名函数即用即销毁,不占用内存

      res2=filter(lambda n:n>5,li)  

      li2=[lambda i:i*9 for i in range(8)]

           print((lambda x,y:x+y)(3,5))

      print((lambda x,y='world':x+y)('hello'))

    4、偏函数:固定参数,减少参数传递

    from functools import partial
    
    def func(a,b,c):
        print(a,b,c)
    
    func(11,22,33)
    func(11,44,55)
    #有相同参数时可使用偏函数,固定
    func11_cp = partial(func,11)
    #再次调用时,即可减少参数传递
    func11_cp(22,33)
  • 相关阅读:
    git如何忽略特殊文件
    一文了解H5照片上传过程
    Vue组件通信方式(8种)
    H5 拍照图片旋转、压缩和上传
    Chrome插件推荐
    高效开发之使用Cmder替换cmd
    使用git配置ssh的文章推荐
    360极速浏览器如何默认设置必应搜索引擎
    notepad 多文档切换
    centos下kill、killall、pkill命令区别
  • 原文地址:https://www.cnblogs.com/qingyuu/p/12255561.html
Copyright © 2020-2023  润新知