day8-断言
功能概述
断言被用作你接下来的程序执行,如果后面程序依赖于前面的程序,后面的程序有很重要,就是后面的程序执行肯定不能出错,所以在执行之前要做检查工作。
import importlib mod = importlib.import_module("lib.aa") instance = mod.C() print(instance) assert instance.name is str #断言关键字assert print("ddd") #输出 Traceback (most recent call last): File "/Users/huwei/PycharmProjects/s14/module_3/动态导入模块.py", line 10, in <module> <lib.aa.C object at 0x1040386d8> assert instance.name is str AssertionError
解析:可以看到出现了断言错误报错,因为assert断言需要加上type判断类型,接着我们对代码进行修改:
assert type(instance.name) is str #输出 ddd
再将str修改为int
assert type(instance.name) is int print(instance.name / 2) #如果上面断言的是int有效,那么到这步就可以进行计算 #输出 Traceback (most recent call last): File "/Users/huwei/PycharmProjects/s14/module_3/动态导入模块.py", line 10, in <module> assert type(instance.name) is int AssertionError
解析:这里的断言主要起了一个检查的作用,如果后面的程序很重要,必须依赖前面的判断有效才能执行后面后面的程序,同样如果使用if...type()...else...也能实现这种效果,但是代码量比较多。