core_locals_eval.py 467 B

1234567891011121314
  1. """
  2. categories: Core,Runtime
  3. description: Code running in eval() function doesn't have access to local variables
  4. cause: MicroPython doesn't maintain symbolic local environment, it is optimized to an array of slots. Thus, local variables can't be accessed by a name. Effectively, ``eval(expr)`` in MicroPython is equivalent to ``eval(expr, globals(), globals())``.
  5. workaround: Unknown
  6. """
  7. val = 1
  8. def test():
  9. val = 2
  10. print(val)
  11. eval("print(val)")
  12. test()