43_eval.py 848 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. assert eval('1+1') == 2
  2. assert eval('[1,2,3]') == [1,2,3]
  3. def f(x):
  4. return eval('x')
  5. assert f(1) == 1
  6. a = 0
  7. assert eval('a') == 0
  8. exec('a = 1')
  9. assert a == 1
  10. def f(a):
  11. exec('a = 3')
  12. return a
  13. assert f(2) == 3
  14. exec(
  15. "exec('a = eval(\"3 + 5\")')"
  16. )
  17. assert a == 8
  18. def f():
  19. b = 1
  20. exec(
  21. "exec('b = eval(\"3 + 5\")')"
  22. )
  23. assert b == 8
  24. class G: pass
  25. def abc():
  26. g = G()
  27. exec('a=1', g.__dict__)
  28. return g.a
  29. res = abc()
  30. assert (res==1), res
  31. # test locals and globals
  32. globals = {'a': 1}
  33. locals = {'a': 1}
  34. exec('a=2', globals, locals)
  35. assert locals == {'a': 2}
  36. assert globals == {'a': 1}
  37. exec('a=2', globals)
  38. assert globals == {'a': 2}
  39. globals = {'a': 2}
  40. locals = {'b': 3}
  41. assert eval('a*b', globals, locals) == 6
  42. try:
  43. exec('a*b*c', globals, locals)
  44. exit(1)
  45. except NameError:
  46. pass