一:python functools.wraps 实例

1. 未使用wraps的实例

#!/usr/bin/env python
# coding:utf-8 def logged(func):
def with_logging(*args, **kwargs):
'''i am wraps's doc'''
print func.__name__ + " was called"
return func(*args, **kwargs) return with_logging @logged
def f(x):
"""i am original doc"""
return x + x * x print f.__name__ # 期望的是原本的名字f,结果换成了装饰器里的新函数的名字with_logging
print f.__doc__ # 期望的是原本的注释,加了个装饰器成了新加装饰器里的注释了

2. 使用了wraps的实例

from functools import wraps

def logged(func):
@wraps(func)
def with_logging(*args, **kwargs):
'''i am wraps's doc'''
print func.__name__ + " was called"
return func(*args, **kwargs) return with_logging @logged
def f(x):
"""i am original doc"""
return x + x * x print f.__name__ # prints 'f'
print f.__doc__ # prints 'i am original doc'

二:python functools.partial 实例解读

#!/usr/bin/env python
# coding:utf-8 from functools import partial # 函数在执行时,要带上所有必要的参数进行调用。但是,有时参数可以在函数被调用之前提前获知。这种情况下,
# 一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。
def add(a, b):
return a+b
add(4, 3) # 普通执行函数的方式
plus = partial(add, 10) # 预先输入一部分参数10,
plus(2) # 再输入剩下的参数,超出少于都会报错;
plus = partial(add, 10, 2) # 预先输入所有参数
plus() # 不能再有入参了 def add2(a, b, c=2): # 有默认值的函数
return a + b + c
plus3 = partial(add2, 1)
plus3(1, 2)
partial(add2, 101)(1) def add3(*argv, **kwargs): # 不限制入参
return reduce(lambda x,y:x+y, argv)
plus4 = partial(add3, 1, 2)
plus4()

最新文章

  1. oracle大数据量。表分区提示查询效率
  2. supersr--图形上下文的注意点
  3. css美化checkbox radio样式
  4. Linq To SQLite by CRUD
  5. NDK(11)Android.mk编译APK模板
  6. Android SDK更新 Connection to http://dl-ssl.google.com refused 解决方法
  7. TCP/IP协议原理与应用笔记15:网络连接设备
  8. Clean Code 笔记 (一):命名
  9. html中的表格 bootstrap-table
  10. Jquery datepicker 时间插件使用 js 时间相加,相减
  11. [JCIP笔记](五)JDK并发包
  12. ConcurrentHashMap扩容
  13. 基于TCP 协议的RPC
  14. BugkuCTF web基础$_GET
  15. Bootstarp 模版网站
  16. vue 监听state 任意值变化、监听mutations actions
  17. Idea中如何将web项目打包成war包并放到tomcat中启动
  18. Django入门-框架目录介绍
  19. VSTO学习(四)——自定义Excel UI 转载
  20. R语言包相关命令

热门文章

  1. 配置DispatcherServlet应该写/还是/*
  2. 05 python 初学(列表)
  3. docker 12 docker容器数据卷
  4. Shiro核心概述
  5. Spring_AOP 记录系统关键操作日志用法
  6. 【thinkPHP框架】Failed opening required 'header.php' include_path='.;c:\php5\pear 终级解决方案
  7. keras神经网络三个例子
  8. 【强化学习】用pandas 与 numpy 分别实现 q-learning, saras, saras(lambda)算法
  9. Groovy语言学习--语法基础(1)
  10. UART、SPI和I2C详解