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实现简单的四则运算计算器
Nov 02 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
Python单元测试简单示例
Jul 03 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
python 5个实用的技巧
Sep 27 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
python 如何在list中找Topk的数值和索引
May 20 Python
用Python可视化新冠疫情数据
Jan 18 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程序员的13个好习惯小结
2012/02/20 PHP
php中define用法实例
2015/07/30 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
jquery multiSelect 多选下拉框
2010/07/09 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
初学python数组的处理代码
2011/01/04 Python
python实现通过shelve修改对象实例
2014/09/26 Python
Python退火算法在高次方程的应用
2018/07/26 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
python3 求约数的实例
2019/12/05 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
如何基于Python按行合并两个txt
2020/11/03 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
综治工作心得体会
2014/09/11 职场文书
论群众路线学习笔记
2014/11/06 职场文书
岗位职责范本大全
2015/02/26 职场文书
教师节班会开场白
2015/06/01 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸