装饰器: 在不改变原函数代码基础上,为原函数扩展功能
不带参数的装饰器- 装饰器格式:
- ##装饰器的编写(函数的嵌套,外城函数返回内城函数):
- def wrapper (funk):
- def inner (*args,**kwags):
- #自定义共能,根据功能在funk函数执行前后展现对应将其放在funk()前后
- pass(自定义功能)
- data = funk(*args,**kwargs)
- return data #调用被装饰的函数并返回其值
- #若是return funk 是返回funk代指的函数
- return inner
- ##装饰器的使用:
- @wrapper #@外层函数
- def index(*args,**kwargs):
- pass
- index()
-
复制代码 @wrapper:1.执行wrapper函数以index函数为参数(即func指向index):wrapper(index)
2.执行完外城函数后将内城函数返回,赋值给index变量,此时index不在指向原先指向的函数,而是指向内层函数
带参数的装饰器
推导式:
列表推导式: v = [for循环中的变量 for循环一个可迭代对象] 中间没有用逗号隔开 eg:v = [i for i in range(10)]
v = [for循环中的变量 for循环一个可迭代对象 if条件] if条件满足加到列表中 eg: v = [i for i in range(10) if i>10]
- 面试题1:
- v = [lambda x:x*i for i in range(10)]
- v[0](2)
- print(v) #v列表里面放着10个匿名函数,没有被执行且i循环完后为9
- print(v[0](2)) #执行匿名函数且参数x = 2 >>>18
- 面试题2:
- def num():
- return [lambda x:x*i for i in range(4)]
- v = [m(2) for m in num()] #调用num得到含有匿名函数的列表且i=3,for循环此列表,m(2)作为列表v的元素
- print(v)>>>[6, 6, 6, 6]
复制代码 集合推导式: v = {for循环中的变量 for循环一个可迭代对象} 得到一个集合
列表推导式: v = {"k" + str(i) : i for i in range(10)} #“k"+str(i) 是字符串的拼接 #注意集合,字典中不是所有数据类型都能作其元素
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |