|
|
|
|
|
by sillysaurusx
1973 days ago
|
|
from watchpoints import watch
a = []
watch(a)
a.append(1) # Trigger
a = {} # Trigger
HOW?! I demand an explanation.How does the second trigger fire? Deterministically, without relying on GC tricks? It’s watching a variable name, somehow. Does it hook into globals()? But how would it know it needs to? |
|
It then uses sys.settrace (which is intended as an interface for debuggers) to step through the code and check whether the variable has been changed. Documentation on sys.settrace: https://docs.python.org/3/library/sys.html#sys.settrace
Python exposes most of its guts as part of the standard library, making clever hacks like this possible.