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 相关文章推荐
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
跟老齐学Python之有容乃大的list(1)
Sep 14 Python
在Python中使用元类的教程
Apr 28 Python
python 重定向获取真实url的方法
May 11 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
Python流程控制 if else实现解析
Sep 02 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
python编写俄罗斯方块
Mar 13 Python
python openpyxl模块的使用详解
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中mysql与mysqli的区别分析
2013/06/10 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
一个简单的javascript类定义例子
2009/09/12 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
简单的Python的curses库使用教程
2015/04/11 Python
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
python实现梯度法 python最速下降法
2020/03/24 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
详解如何修改python中字典的键和值
2020/09/29 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
英国健身超市:Fitness Superstore
2019/06/17 全球购物
什么是Rollback Segment
2013/04/22 面试题
舞蹈比赛获奖感言
2014/02/04 职场文书
年级组长自我鉴定
2014/02/22 职场文书
爱的教育读书笔记
2015/06/26 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书
500字作文之难忘的同学
2019/12/20 职场文书