装饰器
目的: 不改变原来代码的基础上. 给函数添加新功能
动态代理. 拦截器 通用装饰器的写法
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]))
												

装饰器,栈 ,asyncio 代码的更多相关文章

  1. $如何用Python装饰器实现一个代码计时器?

    有时候我们很希望看到程序中某个函数或某个代码段的耗时情况,那么该如何办呢?本文用两种方式实现了代码计时器的功能,第一种方式是采用装饰器来实现,第二种方式采用上下文管理器实现. 其实计算代码的运行时间, ...

  2. Decorator - 利用装饰器武装前端代码

    历史 以前做后端时,接触过一点Spring,也是第一次了解DI.IOC等概念,面向切面编程,对于面向对象编程还不怎么熟练的情况下,整个人慌的一批,它的日志记录.数据库配置等都非常方便,不回侵入到业务代 ...

  3. java 装饰器模式实现代码

    目录 1.实现装饰器模式 1.1.公共接口 1.2.接口实现 1.3.装饰器 1.4.装饰构件 1.5.测试装饰器 上图展示的是io流中的一个装饰者模式的代码结构 1.实现装饰器模式 汽车厂生产汽车实 ...

  4. python 全栈开发,Day12(函数的有用信息,带参数的装饰器,多个装饰器装饰一个函数)

    函数的执行时,*打散.函数的定义时,*聚合. from functools import wraps def wrapper(f): # f = func1 @wraps(f) def inner(* ...

  5. 【代码学习】PYTHON装饰器

    一.装饰器 对原代码不修改的基础上完善代码 写代码要遵循开放封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即: 封闭 ...

  6. python -- 返回函数、匿名函数、装饰器

    返回函数 高阶函数的参数可以是函数,那么其返回值也可以是函数. 闭包 对于高阶函数,内部函数可以引用外部函数的参数和局部变量.当调用外部函数返回内部函数时,相关参数和变量都保存在返回的函数(即内部函数 ...

  7. python基础(8)-装饰器函数&进阶

    从小例子进入装饰器 统计一个函数执行耗时 原始版本 import time # time模块有提供时间相关函数 def do_something(): print("do_something ...

  8. 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 对于代码你有编程感觉吗 很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固 ...

  9. Python 元编程 - 装饰器

    Python 中提供了一个叫装饰器的特性,用于在不改变原始对象的情况下,增加新功能或行为. 这也属于 Python "元编程" 的一部分,在编译时一个对象去试图修改另一个对象的信息 ...

随机推荐

  1. 基于 HTML5 的工业组态高炉炼铁 3D 大屏可视化

    前言 在大数据盛行的现在,大屏数据可视化也已经成为了一个热门的话题.大屏可视化可以运用在众多领域中,比如工业互联网.医疗.交通.工业控制等等.将各项重要指标数据以图表.各种图形等形式表现在一个页面上, ...

  2. css清除常用默认样式表

    /*公共样式*/ html, body, div, ul, li, h1, h2, h3, h4, h5, h6, p, dl, dt, dd, ol, form, input, textarea, ...

  3. python全栈开发笔记---------数据类型-----集合set

    定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key 1.不同元素组成 2.无序 3.集合中元素必须是不可变类型(数字,字符串,元组) 特性:集合的目的是讲不同的值放到 ...

  4. jQuery键盘敲击事件,换键的话换键码就可以

    $("body").keyup(function () { if (event.which == 13){ $("#Btn_login").trigger(&q ...

  5. python 实现求一个集合的子集

    概要 今天偶然看到有个关于数学中集合的问题,就突发奇想的想用python实现下求一个集合的子集. 准备 我当然先要复习下,什么是集合,什么是子集? 比较粗犷的讲法,集合就是一堆确定的东西,细致一点的讲 ...

  6. overload(重载)和override(覆盖)的注意点

    使用overload(重载)的几个注意点: 在使用重载时只能通过不同的参数形式.例如:不同的参数类型,不同的参数个数,不同的参数顺序,当然,同一个方法内的几个参数类型必须不一样.例如可以是fun(in ...

  7. React Native 调用 Web3(1.x) 的正确姿势

    1 创建项目 react-native init lm1 cd lm1 2 安装依赖包 yarn add node-libs-browser 3 创建 rn-cli.config.js 脚本 cons ...

  8. flask自定义处理错误方法

    自定义错误处理方法: 当客户端访问浏览器是,得到相对应的状态码,服务器通过状态码给用户相对应的页面. @app.errorhandler(404) def handle_404_error(err): ...

  9. 在vue中使用Echarts画曲线图(异步加载数据)

    现实的工作中, 数据不可能写死的,所有的数据都应该通过发送请求进行获取. 所以本项目的需求是请求服务器获得二维数组,并生成曲线图.曲线图的横纵坐标均从获得的数据中取得. Echarts官方文档: ht ...

  10. 《从Lucene到Elasticsearch:全文检索实战》学习笔记三

    今天我给大家讲讲倒排索引. 索引是构成搜索引擎的核心技术之一,它在日常生活中是非常常见的,比如我看一本书的时候,我首先会看书的目录,通过目录可以快速定位到具体章节的页码,加快对内容的查询速度. 文档通 ...