>>> >>> def myexec(s): ... eval(compile(s, '<string>', 'single')) ... >>> x = 3 >>> myexec('x = 4') >>> myexec('x') 3 >>> myexec('print x') 3 >>>
On Tue, Jun 5, 2012 at 6:12 PM, News123 <news1...@free.fr> wrote: > If I start Python in interactive mode, > and I yype the commands, > 'a=3', 'a', 'print a' > > > Then the output would look like: >>>> a = 3 >>>> a > 3 >>>> print a > 3 > > > Now within an application I'd like to achieve exactly this behaviour > Meaning, that > - for assignments nothing is displayed > - for expressions the result of the exprission displayed > - and statements like print statements would be executed > > > The only thing, that I came up with is following code and that would > even print out results for 'a=3', where the normal interactive python would > not echo any result. > > for cmd in [ 'a=3', 'a', 'print a' ] : > try: > print('>>> ' + cmd) > exec('__rslt = ' + cmd) > if __rslt is not None: > print repr(__rslt) > except SyntaxError: > exec(cmd) > > The result would look like: >>>> a=3 > 3 >>>> a > 3 >>>> print a > 3 >>>> > > > Is There anything better? > > > > > > -- > http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list