![]()
1、装饰器:装饰器的本质是闭包,而且装饰器其实就是个函数而已
# 标准版装饰器
def wrapper(f):
def inner(*args,**kwargs):
'''执行被装饰函数之前的操作'''
ret = f(*args,**kwargs)
'''执行被装饰函数之后的操作'''
return ret
return inner
装饰器:在不改变原函数调用的方式上,给原函数添加一些额外的功能。登陆验证,写日记,执行效率等等
开放封闭原则:对拓展开放、对修改封闭
2、内置函数:
locals: 函数会以字典的类型返回当前位置的全部局部变量
globals: 函数以字典的类型返回全部全局变量
eval : 执行字符串类型的代码,并返回最终结果
exec: 执行字符串类型的代码流
map: 生成器表达式循环模式
# 模板
print[i for i in map(lambda x: x ** 2, [1, 2, 3, 4, 5]]) # 使用 lambda 匿名函数 可[]添加多个列表
# 结果 [1, 4, 9, 16, 25]
reduce: 可以key
# 模板
reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
# 结果 15
complie: 将字符串类型的代码编译
hash: 获取一个对象(可哈希:int,str,bool,tuple)的哈希值
id: 用于获取对象的内存地址
help: 函数用于查看函数或模块用途的详细说明
callable: 用于检查一个对象是否是可调用的,如果是返回True,否则False
range: 可创建一个整数对象,一般用在for循环中
next: 内部实际使用了__next__方法,返回迭代器的下一个项目
iter: 用来生成迭代器
float: 将整数和字符串转换成浮点数
进制转换: bin:将十进制转换成二进制字符串并返回
oct:将十进制转换成八进制字符串并返回
hex:将十进制转换成十六进制字符串并返回
abs: 返回数字的绝对值
divmod: 计算除数与被除数的结果,返回一个包含商和余数的元祖
round: 保留浮点数的小数位,默认保留整数
pow: 求x**y次幂
minmax: 将最小值、最大值返回
# 模板
dic = {'a':3,'b':2,'c':1}
print(min(dic,key=lambda x:dic[x]))
bytes/str: 编解码的方式
# 第一种
b1 = s1.encode('utf-8')
s2 = b1.decode('utf-8')
print(b1,s2)
#第二种
b1 = bytes(s1,encoding='utf-8')
s2 = str(b1,encoding='utf-8')
print(b1,s2)
all: 可迭代对象中,全是True才返回True
any: 可迭代对象中,有一个True就返回True
sorted: 对所有可迭代对象进行排序操作
zip: 拉链方法用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
# 模板
l1 = [1, 2, 3]
l2 = ['a', 'b', 'c', 5]
l3 = ('*', '**', '***')
iter1 = zip(l1, l2, l3)
for i in iter1:
print(i)
# 面试题
l1 = [1,2,3]
l2 = ['a','b','c']
dic = (zip[l1,l2]) # 一行代码将两个列表对应变成字典
filter: 返回一个迭代器,类似与列表推导式的筛选模式
# 模板
l1 = [2, 4, 5, 6, 7, 8, 10]
iter2 = filter(lambda x: x % 2 == 0, l1)
for i in iter2:
print(i)