R
Ronald Mai
In my opinion, Ellipsis might be in the middle, not only in leftmost or
rightmost, so a placeholder approach can be much more flexible and
convenient.
Here is a reference implementation:
_ = lambda x: x.pop(0)
def partial(func, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = keywords.copy()
newkeywords.update(fkeywords)
newargs = (lambda seq: tuple([(a == _ and a(seq)) or a for
a in args] + seq))(list(fargs))
return func(*newargs, **newkeywords)
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc
Here is example of use:
return args
(1, 2, 3)
Chris Perkins :
rightmost, so a placeholder approach can be much more flexible and
convenient.
Here is a reference implementation:
_ = lambda x: x.pop(0)
def partial(func, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = keywords.copy()
newkeywords.update(fkeywords)
newargs = (lambda seq: tuple([(a == _ and a(seq)) or a for
a in args] + seq))(list(fargs))
return func(*newargs, **newkeywords)
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc
Here is example of use:
return args
(1, 2, 3)
Chris Perkins :