zoukankan      html  css  js  c++  java
  • python reduce和偏函数partial

    functools模块

    reduce方法:

    • reduce方法
      • reduce方法,顾名思义就是减少
      • 可迭代对象不能为空,初始值没提供就在可迭代对象中去一个元素
    from functools import reduce
    nums = [6,9,1,3,5,6,1]
    print(nums)
    print(sum(nums))
    print(reduce(lambda val,x: val+x,nums))

    partial方法:

    • 偏函数,把函数部分的参数固定下来,相当于为部分的参数添加了一个固定的默认值,形成一个新的函数并返回
    • 从partial生成的新函数,是对原函数的封装
    import functools
    def add(x,y):
        return x+y
    newadd = functools.partial(add,y=5)
    
    print(newadd(7))
    print(newadd(7,y=6))
    print(newadd(y=10,x=6))

    源代码

    def partial(func, *args, **keywords):
        def newfunc(*fargs, **fkeywords): # 包装函数
            newkeywords = keywords.copy()
            newkeywords.update(fkeywords)
            return func(*(args + fargs), **newkeywords)
        newfunc.func = func # 保留原函数
        newfunc.args = args # 保留原函数的位置参数
        newfunc.keywords = keywords # 保留原函数的关键字参数参数
        return newfunc
  • 相关阅读:
    DTDebug的使用
    金字塔原理
    C/C++ 加快项目编译速度
    C/C++ C++11 enum class
    微信公众平台 第三方平台
    Protobuf根据.proto文件在运行期生成message
    工具 Bazel
    计算机网络 OAuth
    计算机网络 WebSocket
    C/C++ 函数默认参数
  • 原文地址:https://www.cnblogs.com/xzkzzz/p/11382579.html
Copyright © 2011-2022 走看看