PyMyth: Global variables are evil... WRONG!

jongiddy jongiddy at gmail.com
Tue Nov 12 17:41:34 EST 2013


On Tuesday, November 12, 2013 5:00:37 PM UTC, Rick Johnson wrote: 
> 
> 
>    1. Accept that globals are useful, and make them
> 
>       available through a "real" global syntax, not
> 
>       some attribute of a module that "appears" to be
> 
>       local, but in reality is global. Then prevent
> 
>       external mutation of module attributes directly,
> 
>       and instead, require that mutation must follow a
> 
>       contract defined by internal module "setter"
> 
>       functions.
> 
> 
> 
>    2. Remain convinced that global mutation is evil
> 
>       and prevent mutation of all python module
> 
>       attributes. You can import modules, but you can't
> 
>       mutate their contents.

>From your first post, I take it you're not keen on option #2.

For #1, module globals are exactly the hierarchically namespaced globals that you desire in your first post, except they are variables, not get/set handlers (which is what I take you to mean by an "interface").

Why not create a PEP to provide handlers for module attributes? You could base it on PEP 213, which describes the same feature for classes.

As a bonus, this would trivially support option #2 (e.g. non-mutable math.pi) by raising an exception for the set operator.



More information about the Python-list mailing list