动态导入与断言
动态导入
一般使用__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("是字符串,所以继续执行")