Find most recently defined variable

Viewed 44

Is there a way to find out, which variable was most recently defined within the global namespace?

Preferably a general python solution, but otherwise a solution that works within jupyter notebook would be acceptable as well. (I know about receiving cell_output using _, but the defined variable was not printed)

1 Answers

Since Python 3.7, the dictionaries keep the order of the inserted keys. So, the last declared variable should be the last entry in globals().

Python 3.7.6 (default, Jan  8 2020, 13:42:34)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}
>>> a = 1
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1}
>>> c = 2
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'c': 2}
>>> list(globals().keys())[-1]
'c'
Related