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判断字符串是否是json格式方法分享
Nov 07 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
python实现微信自动回复功能
Apr 11 Python
python的依赖管理的实现
May 14 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
python3.7简单的爬虫实例详解
Jul 08 Python
简单分析python的类变量、实例变量
Aug 23 Python
Python数据分析模块pandas用法详解
Sep 04 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
python怎么对数字进行过滤
Jul 05 Python
Elasticsearch 批量操作
Apr 19 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快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
phpinfo的知识点总结
2019/10/10 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
javascript类型转换示例
2014/04/29 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
Node.js原生api搭建web服务器的方法步骤
2019/02/15 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
浅析Python中signal包的使用
2015/11/13 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
python进程和线程用法知识点总结
2019/05/28 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
如何进行Linux分区优化
2016/09/13 面试题
即将毕业大学生自荐信
2014/01/24 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
工伤事故证明
2014/10/20 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书