动态导入与断言

 

动态导入

一般使用__import__("字符串")  (官方不建议使用这个

例子:aa在lib目录下,aa里有一个类C(),定义了name="alex"

mod = __import__("lib.aa") #相当于导入了lib,能引用aa,但是如果有其他的文件(例如bb.py),则不能导入
print(mod)
print(mod.aa.C().name)
print(mod.bb.D().name)
'''
结果:
<module 'lib' (namespace)>
alex
'''

 注意:这个动态导入,只能引用导入的那个python文件,哪怕同一个目录下的其他文件也不能调用

 

 官方建议使用的动态导入是 import  importlib

import importlib

mod = importlib.import_module("lib.aa")#相当于直接导入lib下的aa
print(mod)
print(mod.C().name)
'''
结果:
<module 'lib.aa' from 'D:\\cheng\\study\\py\\third_module\\learn\\动态导入\\lib\\aa.py'>
alex
'''

 

断言

name = "alex"
assert type(name) is str  #我断言name是字符串
print("是字符串,所以继续执行")#这里执行的程序依赖于之前的情况下,使用功能断言

#相当于如下
if type(name) is str:
    print("是字符串,所以继续执行")

 

posted @ 2018-02-04 21:25  雨之愿风  阅读(107)  评论(0编辑  收藏  举报