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是编译运行的验证方法
Jan 30 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 Python
python WindowsError的错误代码详解
Jul 23 Python
对Python中type打开文件的方式介绍
Apr 28 Python
python爬取微信公众号文章的方法
Feb 26 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
wxPython实现绘图小例子
Nov 19 Python
Python json读写方式和字典相互转化
Apr 18 Python
Python如何用wx模块创建文本编辑器
Jun 07 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
python3中编码获取网页的实例方法
Nov 16 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 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 insert语法详解
2008/06/07 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
教你学会使用Python正则表达式
2017/09/07 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
python实现推箱子游戏
2020/03/25 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
幼儿园教师备课制度
2014/01/12 职场文书
法制宣传标语
2014/06/23 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
护理实习生带教计划
2015/01/16 职场文书
档案接收函格式
2015/01/30 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers