>> You should be using compile with the "single" start symbol, and then >> use eval on the resulting code option. >> >> > thanks Martin, > but when I read the doc (of one of the many) "compile" functions, > I see 2 problems: > - I still have to provide "kind" as exec or eval
No, you can also use "single". > - I can not specify the global and local namespace (which is essential > for me) You do so not in compile, but in eval. > That's good to hear, > as I already didn't realize it could also be used as a statement ;-) It *is* a statement, and always was. A "statement" is a fragment of code that just gets executed, and doesn't produce a value (unlike an expression, which does produce a value). So you can't write x = exec "1+1" or foo(exec) whereas you *can* write x = eval("1+1") and foo(eval) Likewise, you cannot write in Python 2.x, but can write in 3.x x = print("Hello") and foo(print) Things like "for", "while", "return", and assignments are statements, things like "+", "**", lambda, function calls are expressions. print and exec are statements in 2.x, and functions (thus, expressions) in 3.x. Regards, Martin -- http://mail.python.org/mailman/listinfo/python-list