[Python-ideas] Python's Source of Randomness and the random.py module Redux

Serhiy Storchaka storchaka at gmail.com
Thu Sep 10 10:32:21 CEST 2015

On 10.09.15 11:17, Andrew Barnert via Python-ideas wrote:
> On Sep 9, 2015, at 23:08, Chris Angelico <rosuav at gmail.com> wrote:
>> On Thu, Sep 10, 2015 at 11:50 AM, Andrew Barnert via Python-ideas
>> <python-ideas at python.org> wrote:
>>> Of course it adds the cost of making the module slower, and also more complex. Maybe a better solution would be to add a random.set_default_instance function that replaced all of the top-level functions with bound methods of the instance (just like what's already done at startup in random.py)? That's simple, and doesn't slow down anything, and it seems like it makes it more clear what you're doing than setting random.inst.
>> +1. A single function call that replaces all the methods adds a
>> minuscule constant to code size, run time, etc, and it's no less
>> readable than assignment to a module attribute. (If anything, it makes
>> it more clearly a supported operation - I've seen novices not realize
>> that "module.xyz = foo" is valid, but nobody would misunderstand the
>> validity of a function call.)
> I was only half-serious about this, but now I think I like it: it provides exactly the fix people are hoping to fix by deprecating the top-level functions, but with less risk, less user code churn, a smaller patch, and a much easier fix for novice users. (And it's much better than my earlier suggestion, too.)
> See https://gist.github.com/abarnert/e0fced7569e7d77f7464 for the patch, and a patched copy of random.py. The source comments in the patch should be enough to understand everything that's changed.

This doesn't work with the idiom "from random import random".

More information about the Python-ideas mailing list