Nick Stinemates wrote:
Jeff Schwab wrote:
>Q1: When a module is imported, is there any way for the module to
determine the name of the client code's module?
Why would you ever want to do this?
>Q2: My understanding is that the code in a module is executed only on
the first import of that module. Is there any way to have a hook
invoked on subsequent imports, and for that hook (as in Q1) to determine
the name of the client module?
Why would you ever want to do this?
So that the imported module can implement functions that return
information about the client module, as a form of introspection.
Suppose I want to know whether I'm the main module, and I don't want to
write __name__ == '__main__'; it would be nice if I could import a
module and call a method to tell me whether I'm __main__:
import modinfo
if modinfo.main():
print("Hello, world")
I don't really understand why you wouldn't want to do the following:
import foo
foo.exec()
I'm not saying I don't want to do that. I'm saying that, in addition to
what you've written, I want foo to know it's being imported, and by whom.