装饰器+迭代器做业

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

相关文章
相关标签/搜索