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基础教程之字典操作详解
Mar 25 Python
使用优化器来提升Python程序的执行效率的教程
Apr 02 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
pytorch掉坑记录:model.eval的作用说明
Jun 23 Python
python中requests库+xpath+lxml简单使用
Apr 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在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
快速了解Python中的装饰器
2018/01/11 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
《阳光》教学反思
2014/02/23 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
社区工作者演讲稿
2014/05/23 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
出国留学单位推荐信
2015/03/26 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
委托收款证明
2015/06/23 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
Python源码解析之List
2021/05/21 Python
Python上下文管理器Content Manager
2021/06/26 Python