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中使用列表生成式的教程
Apr 27 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
Python将多个excel表格合并为一个表格
Feb 22 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
pyqt5 从本地选择图片 并显示在label上的实例
Jun 13 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Python 循环读取数据内存不足的解决方案
May 25 Python
Python  lambda匿名函数和三元运算符
Apr 19 Python
Python Matplotlib绘制动画的代码详解
May 30 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学习资料汇总与网址
2007/03/16 PHP
浅谈php自定义错误日志
2015/02/13 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
vue实现放大镜效果
2020/09/17 Javascript
在Django的通用视图中处理Context的方法
2015/07/21 Python
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
对numpy中轴与维度的理解
2018/04/18 Python
python对日志进行处理的实例代码
2018/10/06 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
自我评价的正确写法
2013/09/19 职场文书
档案管理员岗位职责
2013/12/01 职场文书
老同学聚会感言
2014/02/23 职场文书
读书活动总结
2014/04/28 职场文书
基层党支部整改方案
2014/10/25 职场文书
2014年护士个人工作总结
2014/11/11 职场文书