On Mon, May 31, 2021 at 12:20 PM MRAB <python@mrabarnett.plus.com> wrote:
On 2021-05-31 15:55, Paul Bryan wrote:
> If you're proposing prevention of monkey patching Ellipsis, I think
> you'll have to go all-in on all builtins.
>
> For example:
>
>>>> str = int
>
>>>> str
>
> <class 'int'>
>
>>>> str == int
>
> True
>
>
If you rebind str to int, the repr of str will say <class 'int'>, so you
can tell that something's happened, but the repr of ... is always
'Ellipsis', even though you've rebound Ellipsis.

Exactly.

Thinking some more about it, perhaps the confusion would be sufficiently reduced if the repr of '...' would be 'Ellipsis (...)', and use this repr to appear in error messages rather than simply the name Ellipsis.

 

>
> On Mon, 2021-05-31 at 11:37 -0300, André Roberge wrote:
>> In Python `...` is referred to as `Ellipsis` and cannot be assigned to.
>> Yet, one can assign any value to the name `Ellipsis`.
>>
>> Consider the following:
>>
>> ```
>> >>> ...
>> Ellipsis
>> >>> ... == Ellipsis
>> True
>> >>> Ellipsis
>> Ellipsis
>> >>> Ellipsis = 3
>> >>> Ellipsis
>> 3
>> >>> ... = 4
>>   File "<stdin>", line 1
>>     ... = 4
>>     ^
>> SyntaxError: cannot assign to Ellipsis
>> >>>  # But I just did assign a new value to the name Ellipsis above.
>> >>> Ellipsis
>> 3
>> >>> ...
>> Ellipsis
>> >>> ... == Ellipsis
>> False
>> ```
>>
>> For consistency, `Ellipsis` (the name) should **always** refer to the
>> same object that `...` refers to, so that both could not be assigned a
>> new value.
>>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/NE2FAW3XDFYUIMILV4BC2XT6VKLC4P6V/
Code of Conduct: http://python.org/psf/codeofconduct/