summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/fun_globals.py
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2020-09-26 01:17:11 +1000
committerDamien George <damien@micropython.org>2021-01-29 23:57:10 +1100
commit925bd67cfb1607264fae79a4fdf5e79ab1ae46aa (patch)
tree72b522d28b71467e8fced05449ae169484c47e91 /tests/basics/fun_globals.py
parent5d68b5e22ca361676903c68a5c004bdff40dd88b (diff)
downloadmicropython-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.py21
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")