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 相关文章推荐
python网络编程学习笔记(九):数据库客户端 DB-API
Jun 09 Python
举例详解Python中yield生成器的用法
Aug 05 Python
Python编写电话薄实现增删改查功能
May 07 Python
python使用生成器实现可迭代对象
Mar 20 Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
Python类class参数self原理解析
Nov 19 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
php URL验证正则表达式
2011/07/19 PHP
让焦点自动跳转
2006/07/01 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
2016/07/01 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
javascript中this关键字详解
2016/12/12 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
船舶专业个人求职信范文
2014/01/02 职场文书
如何写自我鉴定
2014/03/19 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
出生公证书
2015/01/23 职场文书
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python