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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Python 多线程抓取图片效率对比
Feb 27 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
python实现简单flappy bird
Dec 24 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
Python3实现飞机大战游戏
Apr 24 Python
Django通过json格式收集主机信息
May 29 Python
Python+kivy BoxLayout布局示例代码详解
Dec 28 Python
python中的plt.cm.Paired用法说明
May 31 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
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
django rest framework 过滤时间操作
2020/07/12 Python
python Selenium 库的使用技巧
2020/10/16 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
英语专业学子个人的自我评价
2013/10/02 职场文书
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
应届生新闻编辑求职信
2013/11/19 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
财务部绩效考核方案
2014/05/04 职场文书
综合办公室岗位职责
2015/04/11 职场文书
医院志愿者活动总结
2015/05/06 职场文书
《比尾巴》教学反思
2016/02/24 职场文书