Don't understand syntax error: unqualified exec is not allowed ..

Stef Mientki stef.mientki at gmail.com
Mon Oct 20 22:39:18 CEST 2008


hello,

I've syntax error which I totally don't understand:

########## mainfile :
import test_upframe2

if __name__ == '__main__':
  var1 = 33
  code = 'print var1 + 3 \n'
  test_upframe2.Do_Something_In_Parent_NameSpace ( code )

########### file = test_upframe2 :
class Do_Something_In_Parent_NameSpace ( object ) :
  def __init__ ( self, code ) :
   
    def do_more ( ) :
      nonvar = [3,4]
      while len ( nonvar ) > 0 :            # <<<===
        nonvar.pop()                        # <<<===

    import sys
    p_locals  = sys._getframe(1).f_locals
    p_globals = sys._getframe(1).f_globals
    try :
      exec ( code, p_globals, p_locals )
    except :
      print 'ERROR'


gives me:
SyntaxError: unqualified exec is not allowed in function '__init__' it 
contains a nested function with free variables (gui_support.py, line 
408)            

"unqualified exec" : I thought that meant there is some ambiguity in the 
namespace, but  I explictly definied the namespace

The function "do_more"  is never called, so what does it matter what's 
in there ?

If I remove the while-loop (which of course I can't) the syntax error 
disappears.

I can place the function either as a class method or as a normal 
function outside the class,
which both works well.
But I want the method / function not to be hidden.

Why does the above syntax error appear ?
Are  there other ways to hide the function ?

thanks,
Stef Mientki



More information about the Python-list mailing list