📅  最后修改于: 2023-12-03 15:15:53.255000             🧑  作者: Mango
assert
和 assertion
在 Python 中使用 assert
声明一个断言来检查代码是否符合期望。如果断言失败,将抛出 AssertionError
异常。
assert 1 + 1 == 3, "1 + 1 应该等于 2"
在上面的示例中,我们期望 1 + 1
应该等于 2
,但是实际结果等于 3
,断言失败,抛出 AssertionError
异常,并且错误消息为 "1 + 1 应该等于 2"
。
通常,我们使用 assert
检查函数参数、函数返回值等操作是否符合预期。具体来说,我们可以在下面的几个场景中使用断言:
assert foo() == 4, "foo() 应该返回 4"
assert len(l) >= 5, "l 长度应该大于等于 5"
assert isinstance(a, int), "a 应该是 int 类型"
在使用断言时,我们要确保在测试和调试阶段使用断言帮助我们找出问题。但是,也要确保生产代码不会抛出 AssertionError
异常。因此,在生产代码中使用断言是一个争议点,很多人不建议使用。不过,如果你想在生产环境中使用断言,可以通过设置 Python 解释器的 -O
选项,来将断言从字节码中移除。
isistance
isistance
函数在 Python 中用于判断一个对象是否为一个特定的类(或其派生类)的实例。如果是,则返回 True
,否则返回 False
。
a = 5
print(isinstance(a, int)) # True
b = "hello"
print(isinstance(b, str)) # True
c = [1, 2, 3]
print(isinstance(c, list)) # True
d = (1, 2, 3)
print(isinstance(d, tuple)) # True
在上面的示例中,我们使用 isinstance
函数检查对象 a
是否为 int
类型的实例;检查对象 b
是否为 str
类型的实例; 检查对象 c
是否为 list
类型的实例; 检查对象 d
是否为 tuple
类型的实例。
我们也可以检查一个对象是否为多个类的实例:
a = 5
print(isinstance(a, (int, float))) # True
b = 15.6
print(isinstance(b, (int, float))) # True
c = "hello"
print(isinstance(c, (list, tuple))) # False
在上面的示例中,我们使用 isinstance
函数来检查对象 a
是否为 int
或 float
类型实例,结果是 True
; 检查对象 b
是否为 int
或 float
类型实例,结果是 True
;检查对象 c
是否为 list
或 tuple
类型实例,结果是 False
。
使用 isinstance
函数可以避免类型错误,保证代码正确性,提高代码的鲁棒性。