On Sat, Jul 27, 2019 at 9:28 PM Steven D'Aprano email@example.com wrote:
If you're going to add support for a placeholder, there is no need to create a new kind of partial function?
Exactly! This is just an enhanced functools.partial. An enhancement that has already been done in several 3rd party libraries, in fact. I like the ellipsis, which most 3rd parties use, but it could be configurable what the sentinel is. Maybe a default brand new `functools.SKIP` object, but with the docs explaining the way to use the ellipsis for those 99% of users for whom that wouldn't break anything.
Someone posted an example implementation that used a configurable placeholder like this.
Sure we could also use a `lambda` instead
I believe that partial is faster than lambda.
I don't really care about faster. I think the "partial with placeholder" is simply nicer to read for many cases. Sure this is a toy, but:
lastname = 'Mertz' greet_david = partial(print, ..., 'David', lastname) # In Python 3.9 greet_david('Verwelkoming')
Verwelkoming David Mertz
greet_david = lambda greeting: print(greeting, "David", lastname) greet_david('Cześć')
Cześć David Mertz
OK, that's a bad example because we are using it for the side effect too, but I think it illustrates how the more flexible partial() would look better than lambda.