Discuss / Python / 可变参数在左,关键字参数在右

可变参数在左,关键字参数在右

Topic source

青铜神裔

#1 Created at ... [Delete] [Delete and Lock User]

'''

  1. def partial(func, args, *keywords):
  2. def newfunc(fargs, *fkeywords):
  3. newkeywords = keywords.copy()
  4. newkeywords.update(fkeywords)
  5. return func(args, fargs, **newkeywords)
  6. newfunc.func = func
  7. newfunc.args = args
  8. newfunc.keywords = keywords
  9. return newfunc ''' 看了一下tin猪麻麻给的源码,了解了实现过程 将固定的可变参数作为函数的第一个参数,因此在参数列表的最左边;固定的关键字参数则用update函数更新原dict,因此在参数列表的最右边

coLBooy

#2 Created at ... [Delete] [Delete and Lock User]

关键字参数dict是无序的啊,我觉得无所谓左右的。不过可变参数倒是一定在最左边的。

ywjco_567

#3 Created at ... [Delete] [Delete and Lock User]

functools.partial(func, *args, **keywords)

返回一个新的partial对象,当调用该对象时,该对象的行为将类似于用位置参数args和关键字参数keywords调用的*func**。*如果向调用提供了更多参数,则会将它们追加到args中。如果提供了其他关键字参数,它们将扩展并覆盖关键字。大致相当于:

def partial(func, *args, **keywords):
    def newfunc(*fargs, **fkeywords):
        newkeywords = keywords.copy()
        newkeywords.update(fkeywords)
        # return func(*args, *fargs, **newkeywords)
        return func(*(args + fargs), **newkeywords)
    newfunc.func = func
    newfunc.args = args
    newfunc.keywords = keywords
    return newfunc

  • 1

Reply