1.叠加装饰器的装饰顺序与执行顺序html
装饰顺序,由下而上python
执行顺序,由下而上app
2.什么是无参装饰器与有参装饰器函数
无参装饰器是没有传入参数的装饰器优化
有参装饰器是传入了参数的装饰器,实现用户权限区分code
3.简述可迭代对象,迭代器对象及迭代取值方式,及for循环内部原理htm
内置含--iter--的方法都是可迭代对象对象
迭代器对象内置含有--iter--和--next--的就是迭代器对象,能够不依赖索引取值而取出容器内的元素,取出的值是经过不断的迭代取出(迭代取出字典时,字典本是无序的,迭代取出那一瞬间python解释器作了优化,变成有序);blog
for循环又称迭代循环,in后面能够跟任意可迭代对象,在循环时,会调用可迭代对象goods内置的--iter--方法拿到一个迭代对象,而后再调用该迭代器对象的next方法将取到的值赋给item,执行循环体完成一次循环,周而复始,知道捕捉到stoplteration异常,结束迭代。索引
4.迭代器对象的优缺点是什么?
迭代器对象优势:迭代器对象表示的是一种数据流,调用next取值,内存一次只存放一个值。而其余循环内存的值会不断变多,致使内存不够用问题。
迭代器对象缺点:一次只取一个值而且停留,只能日后取值,直到取尽,要想调用前面的值,只能重新调用iter或重新建立一个迭代对象,当两个循环同时使用一个迭代器时,只有一个能调用成功。
5.写出一下func执行的结果
def say_hi(func): def wrapper(*args, **kwargs): print("HI") ret = func(*args, **kwargs) print("BYE") return re return wrapper def say_yo(func): def wrapper(*args, **kwargs): print("YO") return func(*args, **kwargs) return wrapper @say_hi @say_yo def func(): print("Tank & Jason") func() ##执行结果:hi, yo, tank&jason, bye;
6.请实现一个装饰器,限制该函数被调用的频率,如10秒一次
import time def say_hi(func): def wrapper(*args,**kwargs): print('嗨!') res = func(*args, **kwargs) print('苍老师:こんにちは/ko n ni chi ha;' 'はじめまして/ha ji me ma shi te;' 'よろしくおねがいします/yo ro shi ku o ne ga i shi ma su;') return res return wrapper def say_ya(func): def wrapper(*args,**kwargs): print('哇!') res = func(*args, **kwargs) return res return wrapper def time_recode(func): def wrapper(*args,**kwargs): print('请等10秒.....') time.sleep(1) print('1.') time.sleep(1) print('2..') time.sleep(1) print('3...') time.sleep(1) print('4....') time.sleep(1) print('5....') time.sleep(1) print('6.....') time.sleep(1) print('7.......') time.sleep(1) print('8........') time.sleep(1) print('9.........') time.sleep(1) print('10.........') res = func(*args,**kwargs) return res return wrapper @say_hi @time_recode @say_ya def func(): print('苍老师,初次见面,请多关照') func()
7.ATM + 购物车 https://www.cnblogs.com/xiaoyuanqujing/articles/11640785.html