测试代码执行环境为Ubuntu18 + python3.7
max
max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]),分多种使用方式,可以传入多个参数,返回这些参数的最大值,可以传入可迭代对象,返回该对象的最大值;指定key,按照key进行排序,获取最大值。如果可迭代对象为空则返回default的值,如果没有指定default则报valueerror错误。如果最大值有多个,则返回访问到的第一个,这与其他稳定排序实现一致。
测试代码:
def test_max():
print("max of 4, 2, 6, 7, 8: ", max(4, 2, 6, 7, 8))
#print("max of 1: ", max(1)) #error: TypeError: 'int' object is not iterable
print("max of string 'biggerwillam': ", max("biggerwillam"))
#print("max of empty: ", max(())) # ValueError: max() arg is an empty sequence
print("max of empty: ", max((), default='e'))
p1 = Person("Allen", 19, 70)
p2 = Person("Cral", 25, 67)
p3 = Person("Ellen", 23, 80)
p3 = Person("Hell", 25, 55)
print("max person: ", max(p1, p2, p3).name) # need implement compare function
print("max person: ", max(p1, p2, p3, key=lambda k: k.name).name)
print("max person: ", max(p1, p2, p3, key=lambda k: k.age).name) # if multiple items are maximal, the function return the first one encountered.
d1 = Dog("pappy", 40)
print("max person: ", max(p1, p2, p3, d1, key=lambda k: k.weight).name) # different class same key
test_max()
测试结果:
max of 4, 2, 6, 7, 8: 8
max of string 'biggerwillam': w
max of empty: e
max person: Cral
max person: Hell
max person: Cral
max person: Allen
memoryview
class memoryview(obj),根据传入的obj参数返回一个"memory view"对象。memoryview 对象允许 Python 代码访问支持缓冲区协议的对象的内部数据,而无需复制。
测试代码:
def test_memoryview():
v = memoryview(b'abcefg')
print("v[1]: ", v[1])
print("v[