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用字典统计单词或汉字词个数示例
Apr 22 Python
Python字符串处理之count()方法的使用
May 18 Python
python文件名和文件路径操作实例
Sep 29 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
Django model序列化为json的方法示例
Oct 16 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
Python+OpenCV图片局部区域像素值处理详解
Jan 23 Python
python Django的web开发实例(入门)
Jul 31 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
Python操控mysql批量插入数据的实现方法
Oct 27 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
检测png图片是否完整的php代码
2010/09/06 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
vue实现选中效果
2020/10/07 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
python实现定制交互式命令行的方法
2014/07/03 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
Python使用xpath实现图片爬取
2020/09/16 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
经济学博士求职自荐信范文
2013/11/23 职场文书
《老王》教学反思
2014/02/23 职场文书
《钱学森》听课反思
2014/03/01 职场文书
平安建设实施方案
2014/03/19 职场文书
庆国庆活动总结
2014/08/28 职场文书
防卫过当辩护词
2015/05/21 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python