len()
range()
list()
tuple()
str()
int()
float()
dict()
bool()
set()
id()
min()
max()
sum()
isinstance()
next()
open()
print()
super()
type()
zip()
hasattr()
getattr()
setattr()
delatter()
eval()
zip()
a = 1
b = 2
a, b = b, a
print(a)
print(b)
需要继承unittest.TestCase
使用self调用断言
常用断言
断言方法 | 检查条件 |
---|---|
assertEqual | a == b |
assertNotEqual | a != b |
assertTrue | bool(x) is True |
assertFalse | bool(x) is False |
assertIs | a is b |
assertIsNot | a is not b |
assertIsNone | x is None |
assertIsNotNone | x is not None |
assertIn | a in b |
assertNotIn | a not in b |
assertlsInstance | isinstance(a, b) |
assertNotIsInstance | not isinstance(a, b) |
用于完成某种特定检查的断言方法
断言方法 | 检查条件 |
---|---|
assertAlmostEqual(a, b) | round(a-b, 7) == 0 |
assertNotAlmostEqual(a, b) | round(a-b, 7) != 0 |
assertGreater(a, b) | a > b |
assertGreaterEqual(a, b) | a >= b |
assertLess(a, b) | a < b |
assertLessEqual(a, b) | a <= b |
assertRegex(s, r) | r.search(s) |
assertNotRegex(s, r) | not r.search(s) |
assertCountEqual(a, b) | a、b 两个序列包含的元素相同,不管元素出现的顺序如何 |
使用assert进行断言
# 表达式true通过断言,false断言失败
assert 条件表达式 断言失败message
assert可以使用直接使用“==”、“!=”、“<”、“>”、“>=”、"<=" 等符号来比较相等、不相等、小于、大于、大于等于和小于等于
assert 可以直接使用 in 和not in 来比较包含与不包含。
通过assert不需要任何辅助符号,直接判断对象是否为ture,而assert not 用于判断是否为false。
assert xx 判断xx为真
assert not xx 判断xx不为真
assert a in b 判断b包含a
assert a == b 判断a等于b
assert a != b 判断a不等于b
不可以
test_dict = {
"name":
}
报错 SyntaxError: invalid syntax
例子1
class C():
@
def B():
print("B")
def A():
print("A")
C.B()
不会报错
输出B
个人理解:
类和对象都可以调用,类似静态方法
可能在编译的过程中,判断是类还是对象,如果是对象,就会检查是否有self参数接收,如果是类,没有加@classmethod就当做静态方法处理。
例子2
l1 = [1, 2, 3, 4]
print(l1[8:100])
输出[]
不会报错
个人理解:
如果是访问具体某个值会报错,索引越界
如果是切片的话,内部会判断开始和结束位置以及步长
def get_slice(a, beg, end, delta=1):
# 数组切片get方式
if delta == 0: raise ValueError("slice step cannot be 0")
# 将负数下标转化一下
if beg < 0: beg += len(a)
if end < 0: end += len(a)
# 如果转化完成之后依然不在合法范围内,则返回空列表
if beg < 0 and end < 0 or beg >= len(a) and end >= len(a): return []
# 如果方向不同,则返回空列表
if (end - beg) * delta <= 0: return []
# 将越界的部分进行裁剪
beg = max(0, min(beg, len(a) - 1))
end = max(-1, min(end, len(a)))
ans = []
i = beg
while between(beg, end, i):
ans.append(a[i])
i += delta
return ans
继承的关系中,解决子类调用父类方法或属性的问题
按照MRO(Method Resolution Order):方法解析顺序 进行的
class Base:
def __init__(self):
print('Base.__init__')
class A(Base):
def __init__(self):
super().__init__() # 2 重点 此处调用B的__init__,根据__mro__中继承顺序
print('A.__init__')
class B(Base):
def __init__(self):
super().__init__() # 3 此处调用Base的__init__,根据__mro__中继承顺序
print('B.__init__')
class C(A, B):
def __init__(self):
super().__init__() # 1 此处调用A的__init__
print('C.__init__')
C()
输出内容
Base.__init__
B.__init__
A.__init__
C.__init__
理解
当调用super()的时候,会从当前类中__mro__中获取继承类的顺序去执行。