Evaluating Python code without any preparsing¶
- class sage.misc.python.Python[source]¶
- Bases: - object- Allow for evaluating a chunk of code without any preparsing. - eval(x, globals, locals=None)[source]¶
- Evaluate x with given globals; locals is completely ignored. - This is specifically meant for evaluating code blocks with - %pythonin the notebook.- INPUT: - x– string
- globals– dictionary
- locals– completely IGNORED
 - EXAMPLES: - sage: from sage.misc.python import Python sage: python = Python() sage: python.eval('2+2', globals()) 4 '' - >>> from sage.all import * >>> from sage.misc.python import Python >>> python = Python() >>> python.eval('2+2', globals()) 4 '' - Any variables that are set during evaluation of the block will propagate to the globals dictionary. - sage: python.eval('a=5\nb=7\na+b', globals()) 12 '' sage: b 7 - >>> from sage.all import * >>> python.eval('a=5\nb=7\na+b', globals()) 12 '' >>> b 7 - The - localsvariable is ignored – it is there only for completeness. It is ignored since otherwise the following will not work:- sage: python.eval("def foo():\n return 'foo'\nprint(foo())\ndef mumble():\n print('mumble {}'.format(foo()))\nmumble()", globals()) foo mumble foo '' sage: mumble <function mumble at ...> - >>> from sage.all import * >>> python.eval("def foo():\n return 'foo'\nprint(foo())\ndef mumble():\n print('mumble {}'.format(foo()))\nmumble()", globals()) foo mumble foo '' >>> mumble <function mumble at ...>