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 相关文章推荐
在Django的URLconf中进行函数导入的方法
Jul 18 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Python生成器generator用法示例
Aug 10 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
Python split() 函数拆分字符串将字符串转化为列的方法
Jul 16 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
Python3实现英文字母转换哥特式字体实例代码
Sep 01 Python
python实现逻辑回归的示例
Oct 09 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python通过yield实现数组全排列的方法
2015/03/18 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
Python探索之Metaclass初步了解
2017/10/28 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python 整数越界问题详解
2019/06/27 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
电子商务毕业生求职信
2013/11/10 职场文书
客户答谢会活动方案
2014/08/31 职场文书
会计求职信怎么写
2015/03/20 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技