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 相关文章推荐
浅谈用VSCode写python的正确姿势
Dec 16 Python
Django中url的反向查询的方法
Mar 14 Python
Python读取xlsx文件的实现方法
Jul 04 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
python检测服务器端口代码实例
Aug 31 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
Python同时迭代多个序列的方法
Jul 28 Python
总结Python变量的相关知识
Jun 28 Python
Python实现科学占卜 让视频自动打码
Apr 09 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脚本[带参数]的方法
2010/01/22 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
javascript控制swfObject应用介绍
2012/11/29 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
详解javascript void(0)
2020/07/13 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
python开发之文件操作用法实例
2015/11/13 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
ipython和python区别详解
2019/06/26 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
给全校老师的建议书
2014/03/13 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
行风评议整改报告
2014/11/06 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
爱心募捐通知范文
2015/04/27 职场文书
结婚仪式主持词
2015/06/29 职场文书
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python