feature suggestion
moma
moma at example.net
Fri Dec 24 12:41:17 EST 2004
Do not miss the discussion topic/thread:
"Optional Static Typing" (from 12/23/2004)
The referral article is very interesting, even for a newbie.
Introduction of (optional) types will "legitimate" the Python language
even more, while it keeps the fast scripting nature unspoilt.
flexibal wrote:
> hi there.
>
> i didnt know if i should post it at python-dev or here, so i'll start
> here. i'd like to suggest a new language feature for python that allows
> you to explicitly declare a variable.
>
> as we all know, just doing
> v = 5
> declares a new variable named 'v'... but we are people, and we do make
> typos... and it's very disturbing to find your program crashing after
> two weeks of operation, over a NameError... because a certain branch in
> your code, that was previously never taken, had finally been taken.
>
> i've written several large-scale projects in python by now... i find it
> excellent for automated testing and other infrastructural needs... but
> mistyped variable-, function-, class-, and module- names been a PITA
> for me ever since i've started to use python.
>
> python is a scripting language after all, and should preserve its
> scripting nature. but adding features that help you verify your python
> code should also be included.
>
> BASIC has the "OPTION EXPLICIT" feature that forces you to explicitly
> declare all variables, and i see no reason why python should have a
> similar mechanism.
>
> either you start python with some commandline switch, or with a
> language construct, you should be able to turn on explicit variable
> declaration.
>
> first proposal:
> ===============
>
>>>>import sys
>>>>sys.is_strict = True
>>>>decl("x")
>>>>x = 5
>>>>y = 6
>
> StrictError: name 'y' not explicitly declared
>
> the syntactic format can be debated, of course. here 'decl' is used as
> a built-in function that adds the name 'x' to a list of
> "explicitly-declared-variables", and when setattr is called, it makes
> sure the variable's name is within this list.
>
> this is also fit for dynamic code, but suffers from still having to
> execute the code before it is enforced. problems will remain in things
> like:
>
> decl("x")
> x = 5
> if x == 6:
> y = 7
>
> second proposal:
> ================
> syntactic verification, at parsing time. for example:
>
> my-prog.py:
> -------------
>
> ##decl x
> ##decl y, z
> x = 5
> y = 6
> z = 8
> a = 6
>
>
> when this program will be ran with the -strict option, like 6th line
> will generate a SyntaxError: name 'a' not explicitly declared.
>
> this strategy can verify all sorts of dead-branches, as demonstrated
> above, but is not fit for dynamic code.
>
> ---
>
> personally, i like the second proposal more, because it adds no new
> language constructs, only a new commandline switch and meta-comments,
> and is totally backwards compatible.
>
>
>
>
>
>
> -Tomer
>
More information about the Python-list
mailing list