Python实现partial改变方法默认参数


Posted in Python onAugust 18, 2014

在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 相关文章推荐
python求素数示例分享
Feb 16 Python
自己使用总结Python程序代码片段
Jun 02 Python
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
Python中的单继承与多继承实例分析
May 10 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
python redis 删除key脚本的实例
Feb 19 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
python 穷举指定长度的密码例子
Apr 02 Python
python3定位并识别图片验证码实现自动登录功能
Jan 29 Python
Python实现发送email的几种常用方法
Aug 18 #Python
Python内置数据类型详解
Aug 18 #Python
Python3基础之输入和输出实例分析
Aug 18 #Python
一个计算身份证号码校验位的Python小程序
Aug 15 #Python
基于Python的身份证号码自动生成程序
Aug 15 #Python
Python异常处理总结
Aug 15 #Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 #Python
You might like
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
PHP crc32()函数讲解
2019/02/14 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
原生js实现trigger方法示例代码
2019/05/22 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
python抓取文件夹的所有文件
2018/02/27 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
使用Python 统计高频字数的方法
2019/01/31 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
中文专业毕业生自荐信
2013/10/28 职场文书
法学专业本科生自荐信范文
2013/12/17 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技