您的位置:首页 > 其它

动态导入模块:__import__、importlib、动态导入的使用场景

2018-02-23 16:07 821 查看

相关内容:

__import__
importlib
动态导入的使用场景

首发时间:2018-02-23 16:06

__import__:

功能:

是一个函数,可以在需要的时候动态导入模块

使用:

__import__(模块名)
但对于多级目录,只会导入第一级


目录结构:







mo1=__import__("des")
mo2=__import__("child.child")
mo3=__import__("child")

print(mo1,mo2,mo3)#mo3与mo2相同

#同级目录使用模块对象来调用
mo1.B()
mo1.fun2()

#对于目录下的,动态导入只会导入第一级目录
mo2.child.A()#虽然没有具体定义类体,但无错就是成功
mo2.child.fun1()
mo3.child.fun1()


importlib:

介绍:

是一个模块,可以进行动态导入模块

用法:

importlib.import_module("模块名")

import importlib
mo1= importlib.import_module('des')
mo2= importlib.import_module('child.child')
print(mo1,mo2)#mo2直接到child.child

des_B= mo1.B()
mo1.fun2()

mo2.fun1()


动态导入模块的使用场景:

动态切换模块

使用反射判断是否有对应类、方法,无则设置

import importlib
mo3= importlib.import_module('child')
def func4():
print(" run in func4")

if hasattr(mo3,"child1"):
print("yes")
c=getattr(mo3,"child")
else: #没有则设置
setattr(mo3,"func4",func4)

mo3.func4()


其他。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: