需求:利字符串导入模块的方法,
注意:此代码来源Tornado源码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from typing import Any
def import_object(name: str) -> Any:
"""字符串导入模块方法"""
if name.count(".") == 0:
return __import__(name)
parts = name.split(".")
obj = __import__(".".join(parts[:-1]), fromlist=[parts[-1]])
try:
return getattr(obj, parts[-1])
except AttributeError:
raise ImportError("No module named %s" % parts[-1])
if __name__ == '__main__':
from math import sqrt
sqrt_obj = import_object('math.sqrt')
print(sqrt_obj(9))