看代码写结果:

  1. def wrapper(f):
  2. def inner(*args,**kwargs):
  3. print(111)
  4. ret = f(*args,**kwargs)
  5. print(222)
  6. return ret
  7. return inner
  8. def func():
  9. print(333)
  10. print(444)
  11. func()
  12. print(555)

答案

  1. 444
  2. 333
  3. 555

编写装饰器,在每次执行被装饰函数之前打印一句’每次执行被装饰函数之前都得先经过这里,这里根据需求添加代码’。

答案

  1. def warpper(f):
  2. def inner(*args,**kwargs):
  3. print('每次执行被装饰函数之前都得先经过这里,这里根据需求添加代码')
  4. ret = f(*args,**kwargs)
  5. return ret
  6. return inner
  7. @warpper
  8. def func():
  9. print(111)
  10. func()

为函数写一个装饰器,把函数的返回值 +100 然后再返回。

  1. @wrapper
  2. def func():
  3. return 7
  4. result = func()
  5. print(result)

答案

  1. def warpper(f):
  2. def inner(*args,**kwargs):
  3. ret = f(*args,**kwargs)+ 100
  4. return ret
  5. return inner
  6. @wrapper
  7. def func():
  8. return 7
  9. result = func()
  10. print(result)
  11. # 106

请实现一个装饰器,通过一次调用使用函数重复执行5次。

答案

  1. def wrapper(f):
  2. def inner(*args,**kwargs):
  3. for i in range(5):
  4. f(*args,**kwargs)
  5. return inner
  6. @wrapper
  7. def func():
  8. print(222)
  9. func()
  10. # 输出结果
  11. 222
  12. 222
  13. 222
  14. 222
  15. 222

请实现一个装饰器,每次调用函数时,将函数名以及调用此函数的时间节点写入文件中。

  1. 可用代码:
  2. import time
  3. struct_time = time.localtime()
  4. print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time)) # 当前时间节点
  5. def wrapper():
  6. pass
  7. def func1(f):
  8. print(f.__name__)
  9. func1(wrapper)
  10. 函数名通过: 函数名.__name__获取。

答案

  1. import time
  2. # struct_time = time.localtime()
  3. # print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time)) # 当前时间节点
  4. def wrapper(f):
  5. def inner(*args, **kwargs):
  6. with open('a.txt',mode='r+',encoding='utf-8') as f1:
  7. f1.read()
  8. struct_time = time.localtime()
  9. ret = f(*args, **kwargs)
  10. f1.write(f"函数名:{f.__name__},当前时间节点:{time.strftime('%Y-%m-%d %H:%M:%S', struct_time)}\n")
  11. return ret
  12. return inner
  13. @wrapper
  14. def func1(f):
  15. print(f.__name__)
  16. func1(wrapper)
  17. # 输出文件的结果
  18. 函数名:func1,当前时间节点:2019-06-24 19:08:01
  19. 函数名:func1,当前时间节点:2019-06-24 19:08:08

python之道14的更多相关文章

  1. Python补充06 Python之道

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录 ...

  2. 彩蛋 Python之道

    彩蛋 Python之道 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 使用下面的语句可以调出Python中的一个彩蛋, impo ...

  3. 【转】Python之道

    作者:Vamei 出处:http://www.cnblogs.com/vamei Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录于PEP 20. 语句执行之后,终端 ...

  4. Python之道(一)之安装Python

    "Python之道"首先介绍一下在windows系统下怎样安装Python开发环境. (1)下载MSI安装文件 进入网址www.python.org,点击Downloads进入下载 ...

  5. 一入python深似海--python之道

    python社区不乏幽默.先来看"python之道"这首诗. 导入this包: import this 输出是一首诗,这首诗总结了Python的风格,能够指导Python程序猿的编 ...

  6. Python 30道高频面试题及详细解答

    开学啦,开学啦!周末坐地铁的时候看到很多同学推着行李箱,拎着大包小包的穿梭在人群中,哎新的一学期又开始啦,同时也意味着很多同学要准备毕业啦,尤其是准大四,准研三的同学. 今年的招聘行情并不乐观,小公司 ...

  7. Python学习总结14:时间模块datetime & time & calendar (一)

    Python中的常用于处理时间主要有3个模块datetime模块.time模块和calendar模块. 一.time模块 1. 在Python中表示时间的方式 1)时间戳(timestamp):通常来 ...

  8. python几道简单的算法题

    最近看了python的语法,但是总感觉不知道怎么使用它,还是先来敲敲一些简单的程序吧. 1.题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十 ...

  9. Python开发入门14天集训营-第一章

    python第一章 python变量 变量的作用 存数据 被程序调用和操作 标记数据 声明变量 name = "Ydh" 变量名 = 变量值 变量定义规范: 变量名只能是 字母.数 ...

随机推荐

  1. MySQL的字符集和乱码问题

    1.字符集知识 #概述 .字符集是一套文字符号及其编码.比较规则的集合,第一个计算机字符串ASC2 .mysql数据库字符集包括字符集(character)和 校对规则,其中字符集使用来定义mysql ...

  2. Webpack 核心开发者 Sean Larkin 盛赞 Vue

    dev.io 近日邀请了 Webpack 核心开发者 Sean Larkin 回答开发者提问,其中几个问提比较有意思,和掘金的小伙伴们分享一下. 先上点前菜: 有一个开发者问 Sean 如何成为一个热 ...

  3. 大多数项目中会用到的webpack小技巧

    原文地址 本文是作者对自己所学的webpack技巧的总结,在没有指定特殊情况下适用于webpack 3.0版本. 进度汇报 使用webpack --progress --colors这样可以让编译的输 ...

  4. DIV的失去焦点(blur)实现

    用防抖实现DIV鼠标移出消失   由于div标签本身不支持onblur事件,所以对于点击一个按钮弹出的div,我们想要当这个div失去焦点的时候,让它消失不能使用的onblur来实现.  但是可以利用 ...

  5. 对HTML语义化的一些理解和记录

    什么是HTML语义化 说HTML语义化就要先说说HTML到底负责的什么?下面摘自维基百科: 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页 ...

  6. 并发工具类的使用 CountDownLatch,CyclicBarrier,Semaphore,Exchanger

    1.CountDownLatch 允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助. A CountDownLatch用给定的计数初始化. await方法阻塞,直到由于countDo ...

  7. 前端AES加密解密

    最开始使用的aes-js的npm包,后来发现npm上面那个包只能加密16个长度的字节,非16个长度的字符串就会报错,后来使用的是crypto-js, AES总共有四种加密方式,我们使用的CBC方式: ...

  8. python 异步MySQL存库

    对于异步框架而言,这些延迟是无法接受的.因此, Twisted 提供了 twisted.enterprise.adbapi, 遵循DB-API 2.0协议的一个异步封装. adbapi 在单独的线程里 ...

  9. 性能测试进阶:(一)性能测试工具Locust

    An open source load testing tool. 一个开源性能测试工具. define user behaviour with python code, and swarm your ...

  10. 详解分页组件中查count总记录优化

    1 背景 研究mybatis-plus(以下简称MBP),使用其分页功能时.发现了一个JsqlParserCountOptimize的分页优化处理类,官方对其未做详细介绍,网上也未找到分析该类逻辑的只 ...