Python中使用partial改变方法默认参数实例


Posted in Python onApril 28, 2015

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 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
python中的多重继承实例讲解
Sep 28 Python
Python开发常用的一些开源Package分享
Feb 14 Python
在Python中使用元类的教程
Apr 28 Python
Python实现两个list对应元素相减操作示例
Jun 09 Python
Python批量更改文件名的实现方法
Oct 29 Python
面向初学者的Python编辑器Mu
Oct 08 Python
python如何制作缩略图
Apr 30 Python
pandas 时间格式转换的实现
Jul 06 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
jupyter notebook 重装教程
Apr 16 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
调试Python程序代码的几种方法总结
Apr 28 #Python
解析Python中的异常处理
Apr 28 #Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 #Python
Python EOL while scanning string literal问题解决方法
Sep 18 #Python
python中尾递归用法实例详解
Apr 28 #Python
在Python中使用元类的教程
Apr 28 #Python
python删除列表中重复记录的方法
Apr 28 #Python
You might like
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
如何实现一个webpack模块解析器
2018/10/24 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
Python实现单词拼写检查
2015/04/25 Python
Python实现翻转数组功能示例
2018/01/12 Python
python3 读写文件换行符的方法
2018/04/09 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
python去除文件中重复的行实例
2018/06/29 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
领导视察欢迎词
2014/01/15 职场文书
市场营销工作计划书
2014/09/15 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
MongoDB数据库之添删改查
2022/04/26 MongoDB