A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2010-May/100061.html below:

[Python-Dev] Possible patch for functools partial

[Python-Dev] Possible patch for functools partial - Interested?Steven D'Aprano steve at pearwood.info
Thu May 13 13:30:29 CEST 2010
On Thu, 13 May 2010 06:50:02 pm Yaniv Aknin wrote:
> I'm never certain where to reply in such a case, on the list or on
> the issue, but since no one is nosy yet to Daniel's patch, I thought
> I'd ask here.
>
> While a partial object should reasonably never change, you could 
change it:
[...]
> I realize touching p.keywords voids your warranty, but if we can stop
> people from doing it, maybe we should (or at least put a warning in
> the documentation, no?). 

Modifying partial.keywords will almost certainly effect hashing, so I 
think this is relevant to the patch.



> So I'm thinking either we make an 
> immutable/hashable dict while we're at it, or store the keyword
> arguments as a tuple (which guarantees immutability), and only
> convert them back to a dict when you want to call the partial object
> (simpler, slower).

I'd support an immutable dict. partial objects already impose a 
significant (~ 30%) performance penalty:

>>> from timeit import Timer
>>> min(Timer('f(5)', 'f = lambda x: x').repeat())
0.93580079078674316
>>> min(Timer('p(5)', 'from functools import partial; p = partial(lambda 
x: x)').repeat())
1.2715129852294922

No need to make that worse if that can be avoided.



-- 
Steven D'Aprano
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4