Ezio Melotti wrote:
Python currently accepts global statements at the top level:
global foo


Beside being a meaningless operation, this might lead unexperienced
user to make mistakes like:
foo = 5
global foo # make foo global
def func():
...   print foo # access the global foo
...
func()
5
# it works!

"global foo" should raise a SyntaxError, similarly to what already
happens with "return":
return foo
 File "<stdin>", line 1
SyntaxError: 'return' outside function


I opened an issue on the tracker (http://bugs.python.org/issue7329)
and Benjamin suggested to discuss this here.
The test he mentioned is in test_global.py:

   def test4(self):
       prog_text_4 = """\
global x
x = 2
"""
       # this should work
       compile(prog_text_4, "<test string>", "exec")

It just says that "it should work" but it doesn't say /why/.

Well, personally I think it would be a good thing if this raised an exception during bytecode compilation - but it would fall under the moratorium and have to wait a few years.

On the other hand it should be easy to get PyLint to include a checker for this and they are very responsive to feature requests.

All the best,

Michael


Any thoughts?

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk


--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to