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学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
Python利用Nagios增加微信报警通知的功能
Feb 18 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
浅析python协程相关概念
Jan 20 Python
python3使用SMTP发送简单文本邮件
Jun 19 Python
python实现诗歌游戏(类继承)
Feb 26 Python
python用match()函数爬数据方法详解
Jul 23 Python
Python 静态方法和类方法实例分析
Nov 21 Python
python实点云分割k-means(sklearn)详解
May 28 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
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
JavaScript学习笔记之内置对象
2015/01/22 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
利用python获取Ping结果示例代码
2017/07/06 Python
python制作小说爬虫实录
2017/08/14 Python
Python统计单词出现的次数
2018/04/04 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
python遍历小写英文字母的方法
2019/01/02 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
Python单元测试与测试用例简析
2019/11/09 Python
国际政治个人自荐信范文
2013/11/26 职场文书
新三好学生主要事迹
2014/01/23 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
2014年体育部工作总结
2014/11/13 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android