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下如何让web元素的生成更简单的分析
Jul 17 Python
python的常见命令注入威胁
Feb 18 Python
python中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
Python迭代器定义与简单用法分析
Apr 30 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
python基础 range的用法解析
Aug 23 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
Python使用openpyxl批量处理数据
Jun 23 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 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实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
python实现随机密码字典生成器示例
2014/04/09 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
PyQt实现计数器的方法示例
2021/01/18 Python
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
钳工实习自我鉴定
2013/09/19 职场文书
数控技术应届生求职信
2013/11/13 职场文书
24岁生日感言
2014/01/13 职场文书
购房协议书
2014/04/11 职场文书
2014年党务公开方案
2014/05/08 职场文书
同志主要表现材料
2014/08/21 职场文书
办理房产过户的委托书
2014/09/14 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python