Questa è la mia soluzione migliore finora al problema di accesso al modulo di chiamata all'interno di una funzione:Come ottenere il modulo da cui è stata chiamata la funzione attualmente in esecuzione?
import inspect
import sys
def calling_module(level=0):
filename = inspect.stack()[level+2][1]
modulename = inspect.getmodulename(filename)
try:
return sys.modules[modulename]
except KeyError:
return sys.modules['__main__']
... ma implicita nella gestione del KeyError
è la (in gran parte infondata) presupposto che si può si verifica solo se filename
viene eseguito come __main__
.
La libreria standard Python fornisce un modo più efficace per eseguire questa operazione?