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 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
对于Python异常处理慎用“except:pass”建议
Apr 02 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
Python中的默认参数实例分析
Jan 29 Python
Python查找两个有序列表中位数的方法【基于归并算法】
Apr 20 Python
Python解决八皇后问题示例
Apr 22 Python
Python常见数据类型转换操作示例
May 08 Python
Python3实现配置文件差异对比脚本
Nov 18 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 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
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
PHP中“=>
2019/03/01 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
Javascript 函数中的参数使用分析
2010/03/27 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
vue多次循环操作示例
2019/02/08 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
Python 常用的安装Module方式汇总
2017/05/06 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
荷兰超市:DEEN
2018/03/14 全球购物
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
使用HttpSessionListener监听器实战
2022/03/17 Java/Android