having both dynamic and static variables
Santoso Wijaya
santoso.wijaya at gmail.com
Sat Mar 5 23:47:16 EST 2011
Shouldn't this go to python-ideas?
Anyway, I'm partial to "static".
~/santa
On Sat, Mar 5, 2011 at 8:33 PM, Westley MartÃnez <anikom15 at gmail.com> wrote:
> On Sat, 2011-03-05 at 18:37 -0800, John Nagle wrote:
> > On 3/2/2011 9:27 PM, Steven D'Aprano wrote:
> > > On Wed, 02 Mar 2011 19:45:16 -0800, Yingjie Lan wrote:
> > >
> > >> Hi everyone,
> > >>
> > >> Variables in Python are resolved dynamically at runtime, which comes
> at
> > >> a performance cost. However, a lot of times we don't need that
> feature.
> > >> Variables can be determined at compile time, which should boost up
> > >> speed.
> > > [...]
> > >
> > > This is a very promising approach taken by a number of projects.
> >
> > It's worth having some syntax for constants. I'd suggest
> > using "let":
> >
> > let PI = 3.1415926535897932384626433832795028841971693993751
> >
> > I'd propose the following semantics:
> >
> > 1. "let" creates an object whose binding is unchangeable. This
> > is effectively a constant, provided that the value is immutable.
> > A compiler may treat such variables as constants for optimization
> > purposes.
> >
> > 2. Assignment to a a variable created with "let" produces an error
> > at compile time or run time.
> >
> > 3. Names bound with "let" have the same scope as any other name
> > created in the same context. Function-local "let" variables
> > are permitted.
> >
> > 4. It is an error to use "let" on a name explicitly made "global",
> > because that would allow access to the variable before it was
> > initialized.
> >
> > This is close to the semantics of "const" in C/C++, except that
> > there's no notion of a const parameter.
> >
> > "let" allows the usual optimizations - constant folding, hoisting
> > out of loops, compile time arithmetic, unboxing, etc. Ordinarily,
> > Python compilers have to assume that any variable can be changed
> > at any time from another thread, requiring worst-case code for
> > everything.
> >
> > John Nagle
> I'm against constants, for the purpose of "programmers should be smart
> enough to not set a variable to another value that should be static",
> but if Python were to have constants I think it would be better to use
> something more descriptive than 'let'. Also, because the defined
> constant is static, I think it would be better to use 'is' instead of
> '='. Example:
>
> constant x is 5
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20110305/748ba9db/attachment-0001.html>
More information about the Python-list
mailing list