zoukankan      html  css  js  c++  java
  • 装饰器,栈 ,asyncio 代码



    装饰器
    目的: 不改变原来代码的基础上. 给函数添加新功能
    动态代理. 拦截器

    通用装饰器的写法
    def wrapper(fn):
    def inner(*args, **kwargs):
    '''之前'''
    ret = fn(*args, **kwargs)
    '''之后'''
    return ret
    return inner

    @wrapper
    def login():
    pass

    带参数的装饰器
    def wrapper_out(flag):
    def wrapper(fn):
    def inner(*args, **kwargs):
    if flag:
    print("问问老板, 行情怎么样")
    else:
    print("自己去")
    ret = fn(*args, **kwargs)
    print("亲人两行泪")
    return ret
    return inner
    return wrapper

    @wrapper_out(False)
    def yue():
    print("约me?")

    @wrapper_out(True)
    def chi():
    print("吃饭去了")

    yue()
    chi()


    *********************************************************************************************************************
    Stack
    栈, 先进后出
    Queue
    队列, 先进先出


    class StackFullError(Exception):
    pass


    class StackEmptyError(Exception):
    pass


    class Stack:
    def __init__(self, size):
    self.size = size
    self.lst = []
    self.top = 0 # 下一个元素准备装的位置

    def push(self, el):
    # self.lst[self.top] = el # 报错
    if self.top == self.size:
    raise StackFullError('满了')
    self.lst.insert(self.top, el)
    self.top += 1 # 栈顶指针. 向上移动

    def pop(self):
    if self.top == 0:
    raise StackEmptyError("空的")
    self.top -= 1 # 先移动站定指针
    data = self.lst[self.top]
    del self.lst[self.top]
    return data


    s = Stack(6)
    s.push("1")
    s.push("2")
    s.push("3")
    s.push("4")
    s.push("5")
    s.push("6")

    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())
    *********************************************************************************************************************

    asyncio是一个底层模块
    他完成了几个任务的轮流检测io,并且在遇到io的时候能够及时在任务之间进行切换
    然后达到使用单线程实现异步的方式

    import asyncio
    async def func():
    print('111')
    await asyncio.sleep(1)
    print('222')

    loop=asyncio.get_event_loop()
    a=loop.create_task(func()) #任务a
    b=loop.create_task(func()) #任务b

    loop.run_until_complete(asyncio.wait([a,b]))




  • 相关阅读:
    完全背包和多重背包的混合 F
    多重背包转化成完全背包 E
    I
    D. Beautiful Array DP
    B. Long Path dp
    C. Barcode dp
    dp D. Caesar's Legions
    docker-mysql
    日志级别facility
    实时同步lsyncd
  • 原文地址:https://www.cnblogs.com/xdlzs/p/10415085.html
Copyright © 2011-2022 走看看