Terry Reedy wrote:
sorry, don't know how this happened, as I always copy/paste ?
AFAIK locals() == sys._getframe(0 ).f_locals
AFAIK, again one level up
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
Yes ;-)
>
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
Stef Mientki wrote:
>
Indendation is screwed. Is the above all do_more body?
>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.D o_Something_In_ Parent_NameSpac e ( code )
>>
>########### file = test_upframe2 :
>class Do_Something_In _Parent_NameSpa ce ( object ) :
> def __init__ ( self, code ) :
> def do_more ( ) : ## Indentation corrected here
> nonvar = [3,4]
> while len ( nonvar ) 0 : # <<<===
> nonvar.pop() # <<<===
>>
>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.D o_Something_In_ Parent_NameSpac e ( code )
>>
>########### file = test_upframe2 :
>class Do_Something_In _Parent_NameSpa ce ( 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?
>
>
Which locals does this get you? __init__'s? (locals()?)
> import sys
> p_locals = sys._getframe(1 ).f_locals
> p_locals = sys._getframe(1 ).f_locals
Which locals does this get you? __init__'s? (locals()?)
>
>
Isn't this just the same as globals()?
> p_globals = sys._getframe(1 ).f_globals
Isn't this just the same as globals()?
>
>
This is 3.0 exec function syntax.
> try :
> exec ( code, p_globals, p_locals )
> exec ( code, p_globals, p_locals )
This is 3.0 exec function syntax.
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.
>
>
Since you are hiding it, I presume you mean to be, not not to be.
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) "unqualifie d 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.
> 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) "unqualifie d 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.
>>
>Why does the above syntax error appear ?
>Are there other ways to hide the function ?
>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.
>
And now I still don't understand the problem in the above code ;-)
thanks,
Stef