Python中使用partial改变方法默认参数实例


Posted in Python onApril 28, 2015

Python 标准库中 functools库中有很多对方法很有有操作的封装,partial Objects就是其中之一,他是对方法参数默认值的修改。
下面就看下简单的应用测试。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#python2.7x

#partial.py

#authror: orangleliu
'''

functools 中Partial可以用来改变一个方法默认参数

1 改变原有默认值参数的默认值

2 给原来没有默认值的参数增加默认值

'''

def foo(a,b=0) :

    '''

    int add'

    '''

    print a + b
#user default argument

foo(1)
#change default argument once

foo(1,1)
#change function's default argument, and you can use the function with new argument

import functools
foo1 = functools.partial(foo, b=5)  #change "b" default argument

foo1(1)
foo2 = functools.partial(foo, a=10) #give "a" default argument

foo2()
'''

foo2 is a partial object,it only has three read-only attributes

i will list them

'''

print foo2.func

print foo2.args

print foo2.keywords

print dir(foo2)
##默认情况下partial对象是没有 __name__ __doc__ 属性,使用update_wrapper 从原始方法中添加属性到partial 对象中

print foo2.__doc__

'''

执行结果:

partial(func, *args, **keywords) - new function with partial application

    of the given arguments and keywords.

'''
functools.update_wrapper(foo2, foo)

print foo2.__doc__

'''

修改为foo的文档信息了

'''
Python 相关文章推荐
Python中的两个内置模块介绍
Apr 05 Python
win与linux系统中python requests 安装
Dec 04 Python
python reduce 函数使用详解
Dec 05 Python
用Python进行简单图像识别(验证码)
Jan 19 Python
Python使用字典的嵌套功能详解
Feb 27 Python
NumPy排序的实现
Jan 21 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
基于python实现简单网页服务器代码实例
Sep 14 Python
详解基于python的全局与局部序列比对的实现(DNA)
Oct 07 Python
python从PDF中提取数据的示例
Oct 30 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
如何在python中实现ECDSA你知道吗
Nov 23 Python
调试Python程序代码的几种方法总结
Apr 28 #Python
解析Python中的异常处理
Apr 28 #Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 #Python
Python EOL while scanning string literal问题解决方法
Sep 18 #Python
python中尾递归用法实例详解
Apr 28 #Python
在Python中使用元类的教程
Apr 28 #Python
python删除列表中重复记录的方法
Apr 28 #Python
You might like
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
jquery 插件开发备注
2010/08/27 Javascript
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
vue-router项目实战总结篇
2018/02/11 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
django2笔记之路由path语法的实现
2019/07/17 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
python实现图像外边界跟踪操作
2020/07/13 Python
python3让print输出不换行的方法
2020/08/24 Python
银行出纳岗位职责
2013/11/25 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS