[Python-Dev] Possible patch for functools partial - Interested?
Michael Foord
fuzzyman at voidspace.org.uk
Fri May 7 20:01:46 CEST 2010
On 07/05/2010 19:57, Steve Holden wrote:
> Steven D'Aprano wrote:
>
>> On Sat, 8 May 2010 02:07:55 am Rob Cliffe wrote:
>>
>>> Sorry to grouse, but isn't this maybe being a bit too clever?
>>> Using your example,
>>> p1 = partial(operator.add)
>>> is creating a callable, p1, i.e. a sort of function. Yes I know
>>> technically it's not a function, but it behaves very much like one.
>>>
>>> Now, if I write
>>>
>>> def f1(x,y): return x+y
>>> def f2(x,y): return x+y
>>>
>>> I don't expect f1==f2 to be True, even though f1 and f2 behave in
>>> exactly the same way,
>>> and indeed it is not.
>>>
>> I do expect f1==f2, and I'm (mildly) disappointed that they're not.
>>
>>
> How about
>
> def f1(x, y): return x+y
> def f2(x, y): return y+x
>
> As you know, there are limits to everything. It seems to me that while
> pure mathematics can (sometime) easily determine functional equivalence,
> once you get to code it's a lot harder because there are semantic
> constraints that don't apply in pure mathematics.
>
Sure, but in CPython at least you *could* detect *identical* functions
(but not functions that do the same thing in a different way). All the
information is exposed - it would mean comparing bytecode though (plus
signature etc) and is not likely to be portable to other implementations.
Partials that wrap the *same* function (based on identity) comparing
equal seems useful enough to me.
Michael
--
http://www.ironpythoninaction.com/
More information about the Python-Dev
mailing list