The modules are already imported in the current module ( no need of dynamic import ), and have an ALIAS name. The requirement is to get reference to the module by its alias name, and call its function
current module :
import libraries.mymaths.products as myproductlib
def call_func(module_name,method_name):
# module_name = 'myproductlib' , method_name='mult'
# how to call myproductlib.mult here ?
getattr(MODULE_REF, method_name)
would help me to get reference to method, but how to get reference to module by its alias name ?
Use eval() to call a function by its name as a string Call eval(string) with string as the function name and "()" .
You can use dir(module) to see all available methods/attributes.
The dir() function is used to find out all the names defined in a module. It returns a sorted list of strings containing the names defined in a module.
To get the module, you can use globals
. To get the function, use getattr
:
getattr(globals()[module_name], function_name)
Importing a module just binds the module object to a name in whatever namespace you import it in. In the usual case where you import at the top level of the module, this means it creates a global variable.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With