diff options
author | Damien George <damien@micropython.org> | 2020-09-26 01:17:11 +1000 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2021-01-29 23:57:10 +1100 |
commit | 925bd67cfb1607264fae79a4fdf5e79ab1ae46aa (patch) | |
tree | 72b522d28b71467e8fced05449ae169484c47e91 /tests/basics/fun_globals.py | |
parent | 5d68b5e22ca361676903c68a5c004bdff40dd88b (diff) | |
download | micropython-925bd67cfb1607264fae79a4fdf5e79ab1ae46aa.tar.gz micropython-925bd67cfb1607264fae79a4fdf5e79ab1ae46aa.zip |
py/objfun: Support fun.__globals__ attribute.
This returns a reference to the globals dict associated with the function,
ie the global scope that the function was defined in. This attribute is
read-only but the dict itself is modifiable, per CPython behaviour.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tests/basics/fun_globals.py')
-rw-r--r-- | tests/basics/fun_globals.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/basics/fun_globals.py b/tests/basics/fun_globals.py new file mode 100644 index 0000000000..3f32e8bdb0 --- /dev/null +++ b/tests/basics/fun_globals.py @@ -0,0 +1,21 @@ +# test the __globals__ attribute of a function + + +def foo(): + pass + + +if not hasattr(foo, "__globals__"): + print("SKIP") + raise SystemExit + +print(type(foo.__globals__)) +print(foo.__globals__ is globals()) + +foo.__globals__["bar"] = 123 +print(bar) + +try: + foo.__globals__ = None +except AttributeError: + print("AttributeError") |