anomaly

Terry Reedy tjreedy at udel.edu
Tue May 12 16:23:42 EDT 2015


On 5/12/2015 9:56 AM, Steven D'Aprano wrote:

> The consensus among the core developers is:
>
> * in general, the harm and inconvenience from accidentally
>    shadowing built-ins is not great, and it usually easy to
>    spot, debug and prevent;
>
> * when it comes to built-in functions (e.g. sum, map, pow)
>    and types (e.g. int, str, list) there are significant and
>    important use-cases for allowing shadowing;
>
>    (e.g. the built-in sum function shouldn't prevent other
>    modules from providing their own sum function)
>
> * but when it comes to None, True and False, there are no
>    significant or important use-cases for shadowing (it is
>    almost always a bug, not a feature, to redefine None).
>
> The general principle here is of consenting adults: Python allows you to
> shadow built-ins because sometimes it is useful, and the good outweighs the
> potential harm. There are a handful of exceptions to that general principle
> (e.g. None, True, False, I can't think of any others) because in those
> cases the harm (as tiny as it is) outweighs the good.

Having followed Python development for 18 years, I think this is a fair 
summary.



-- 
Terry Jan Reedy




More information about the Python-list mailing list