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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
python定时关机小脚本
Jun 20 Python
django session完成状态保持的方法
Nov 27 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
django admin.py 外键,反向查询的实例
Jul 26 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
关于python的缩进规则的知识点详解
Jun 22 Python
10个顶级Python实用库推荐
Mar 04 Python
使用Python解决图表与画布的间距问题
Apr 11 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 无限分类的树类代码
2009/12/03 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
基于php判断客户端类型
2016/10/14 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
JavaScript DOM基础
2015/04/13 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
js实现简单的打印表格
2020/01/15 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
Django 请求Request的具体使用方法
2019/11/11 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
英文简历中的自荐信范文
2013/12/14 职场文书
班组长安全生产职责
2013/12/16 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL
如何利用python创作字符画
2022/06/25 Python