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...也能实现这种效果,但是代码量比较多。

posted @ 2017-10-25 21:48  Mr.hu  阅读(95)  评论(0编辑  收藏  举报