Terry Reedy wrote:
Stef Mientki wrote:
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 ( ) : ## Indentation corrected here
nonvar = [3,4]
while len ( nonvar ) > 0 : # <<<===
nonvar.pop() # <<<===
Indendation is screwed. Is the above all do_more body?
sorry, don't know how this happened, as I always copy/paste ?
import sys
p_locals = sys._getframe(1).f_locals
Which locals does this get you? __init__'s? (locals()?)
AFAIK locals() == sys._getframe(0).f_locals
p_globals = sys._getframe(1).f_globals
Isn't this just the same as globals()?
AFAIK, again one level up
try :
exec ( code, p_globals, p_locals )
This is 3.0 exec function syntax.
weird, I use it in 2.5 and if I remember well it already worked in 2.4.
but exchanging the function with the statement yields exactly the same
results
Postings should specify which interpreter you are running,
especially when mucking with
internals.
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.
Since you are hiding it, I presume you mean to be, not not to be.
Yes ;-)
Why does the above syntax error appear ?
Are there other ways to hide the function ?
Either use module level __all__ or name the function _do_more and
anyone will know it is private to the module.
done.
And now I still don't understand the problem in the above code ;-)
thanks,
Stef
--
http://mail.python.org/mailman/listinfo/python-list