On 07/11/2015 03:43, Ben Finney wrote:
Bartc <b...@freeuk.com> writes:

Is there no way then in Python to declare:

    pi = 3.141519     # etc

and make it impossible to override?

No, and it would be a bad thing if that were something a library author
could forbid.

Python assumes the programmers using it are consenting adults. Doing
harmful things is difficult but not forbidden.

But surely it can't hurt to ensure certain values can't be changed accidentally or maliciously?

Some dynamic languages (OK, I'm thinking of mine) simply allow you to write:

   const pi = 3.14159

Then this can't be changed, because it would be the equivalent of writing:

   3.14159 = 0

What would be the harm in this?

It's a very simple idea, yet many people and languages either don't like it or can't grasp it. Not even C has the feature, if you don't count using the crude #define for the purpose.

In the case of Python, it could have allowed 'constant folding', so that math.pi*2 need not be evaluated at runtime.

(Python however does make it quite difficult to add features like this. Mostly because such names are not visible across modules when compiling.

Also it is still possible to write math = some_other_module.)

--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to