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打开网页和暂停实例
Sep 30 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
最大K个数问题的Python版解法总结
Jun 16 Python
详解python中asyncio模块
Mar 03 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
基于Python中的yield表达式介绍
Nov 19 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
python音频处理的示例详解
Dec 23 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 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&java(二)
2006/10/09 PHP
PHP新手上路(十二)
2006/10/09 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
实例解析php的数据类型
2018/10/24 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
JavaScript实现连连看连线算法
2019/01/05 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
python将图片转base64,实现前端显示
2020/01/09 Python
django form和field具体方法和属性说明
2020/07/09 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
HR喜欢的自荐信格式
2013/10/08 职场文书
后勤人员岗位职责
2013/12/17 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
购房协议书范本
2014/10/02 职场文书
中学生检讨书1000字
2014/10/28 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
Python 键盘事件详解
2021/11/11 Python