[Python-ideas] PEP 505: None-aware operators
Chris Angelico
rosuav at gmail.com
Wed Aug 1 05:57:57 EDT 2018
On Wed, Aug 1, 2018 at 7:09 PM, Jonathan Fine <jfine2358 at gmail.com> wrote:
> Hi Chris
>
> We're discussing.
>> 10) a ?. b ?. c
>> 11) (a ?. b) ?. c
>
> I asked
>> So, are there any values of 'a' for which #10 and #11 don't give the
>> same result?
>
> You replied
>> I'm not prepared to put my neck out and say "They are absolutely
>> identical" and have people jump on me with some technicality. What is
>> your point here?
>
> I am willing to put my neck out and say a.b.c and (a.b).c are
> equivalent. And my understanding for PEP 505 is that #10 and #11 is
> that they are equivalent.
The first pair are easily proven, since we can just probe existing code.
>>> import dis
>>> dis.dis(lambda a: a.b.c)
1 0 LOAD_FAST 0 (a)
2 LOAD_ATTR 0 (b)
4 LOAD_ATTR 1 (c)
6 RETURN_VALUE
>>> dis.dis(lambda a: (a.b).c)
1 0 LOAD_FAST 0 (a)
2 LOAD_ATTR 0 (b)
4 LOAD_ATTR 1 (c)
6 RETURN_VALUE
>>>
Same byte code? Same result. Unless there's a bug in the peephole
optimizer or something, which I doubt.
ChrisA
More information about the Python-ideas
mailing list