python functools.wraps functools.partial实例解析
2024-08-25 19:21:44
一: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()
最新文章
- oracle大数据量。表分区提示查询效率
- supersr--图形上下文的注意点
- css美化checkbox radio样式
- Linq To SQLite by CRUD
- NDK(11)Android.mk编译APK模板
- Android SDK更新 Connection to http://dl-ssl.google.com refused 解决方法
- TCP/IP协议原理与应用笔记15:网络连接设备
- Clean Code 笔记 (一):命名
- html中的表格 bootstrap-table
- Jquery datepicker 时间插件使用 js 时间相加,相减
- [JCIP笔记](五)JDK并发包
- ConcurrentHashMap扩容
- 基于TCP 协议的RPC
- BugkuCTF web基础$_GET
- Bootstarp 模版网站
- vue 监听state 任意值变化、监听mutations actions
- Idea中如何将web项目打包成war包并放到tomcat中启动
- Django入门-框架目录介绍
- VSTO学习(四)——自定义Excel UI 转载
- R语言包相关命令
热门文章
- 配置DispatcherServlet应该写/还是/*
- 05 python 初学(列表)
- docker 12 docker容器数据卷
- Shiro核心概述
- Spring_AOP 记录系统关键操作日志用法
- 【thinkPHP框架】Failed opening required 'header.php' include_path='.;c:\php5\pear 终级解决方案
- keras神经网络三个例子
- 【强化学习】用pandas 与 numpy 分别实现 q-learning, saras, saras(lambda)算法
- Groovy语言学习--语法基础(1)
- UART、SPI和I2C详解