python偏函数(functool.partail)

functool.partail 方法可以为一个函数生成偏函数

import functools
def f(a,b,c,d):
    print a,b,c,d
a=‘a‘
b=‘b‘
f1=functools.partial(f,a,b)
f1(‘a‘,‘d‘)

这里函数f有a,b,c,d四个变量,通过functool.partail可以生成偏函数f1,f1运行的代码与f相同,只是相对于f,a,b两个参数是固定的了,每次调用f1时,只需要输入c,d两个参数。

可以以k=v的形式输入参数,可以自定义哪个参数是固定的,哪个参数是可变的,即调用函数时才输入

import functools
def f(a,b,c,d):
    print a,b,c,d
a=‘a‘
b=‘b‘
f1=functools.partial(f,c=c,b=b)
f1(a=‘a‘,d=‘d‘)

这个偏函数有什么用?例如经常要调用一个函数,但是这个函数的某些参数是固定的,某些是不固定的,这时候就可以生成一个偏函数,省略固定的参数,而不需要每次调用都输入固定的参数

参考:http://www.cnblogs.com/huxi/archive/2011/06/24/2089358.html

python偏函数(functool.partail)

时间: 2024-07-31 00:08:30

python偏函数(functool.partail)的相关文章

python偏函数

python中functools.partial模块,可以用来定义偏函数,如: def func(x, y): return x+y result = func(2,10) print(result) 运行结果: 12 可以将带默认值的函数,使用functools.partial进行封装,封装后的函数叫做偏函数 def func(x, y, z): return x-y-z func2 = functools.partial(func, 5) result = func2(2,1) print(

Python 偏函数

int 函数可以把字符串转化为整数,当仅仅传入字符串时,int()函数默认按照十进制转换: print int("12345") #12345 int函数还提供额外的base参数,默认值为10,如果传入base参数,可以做N进制的转换 print int("12345",base=8) #5349 print int("12345",16) #74565 假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到

Python 偏函数 partial function

1 import functools 2 int2 = functools.partial(int, base=2) 3 print(int2('100')) 4 5 6 max2 = functools.partial(max, 10) 7 print(max2(2,6,0,8)) functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单. 创建偏函数时,实际上可以接收函数对象.*args和**kw这3个参数. 前

PYTHON修饰器的函数式编程

转自:http://coolshell.cn/articles/11265.html Python修饰器的函数式编程 Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都很相似--都是想要对一个已有的模块做一些"修饰工作",所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能

59个Python使用技巧,从此你的Python与众不同!

今天给大家分享几个Python使用的小技巧,原文来自于Python 技巧总结,进行了细微的调整,感谢作者! 1. 枚举 - enumerate 可以有参数哦 之前我们这样操作: i = 0for item in iterable: print i, item i += 1 现在我们这样操作: for i, item in enumerate(iterable):  print i, item enumerate函数还可以接收第二个参数.就像下面这样: >>> list(enumerate

偏函数functools partial

python偏函数:用于固定函数一部分已知的值,然后重新封装成一个新函数. 导入模块 from functools import partial 1. 例子: def con(m,n): return m*n f = partical(con,0.98) # 0.98的值,传递到con的m f(100) # 100的值传递到con的n 结果 In [194]: def con(m,n): ...: return m*n ...: In [195]: f = partial(con,0.98) I

Python修饰器

Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都很相似——都是想要对一个已有的模块做一些“修饰工作”,所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有的模块中的代码里去.但是OO的Decorator简直就是一场恶梦,不信你就去看看wikipedia上的词条(Deco

Python 中实现装饰器时使用 @functools.wraps 的理由

Python 中使用装饰器对在运行期对函数进行一些外部功能的扩展.但是在使用过程中,由于装饰器的加入导致解释器认为函数本身发生了改变,在某些情况下--比如测试时--会导致一些问题.Python 通过 functool.wraps 为我们解决了这个问题:在编写装饰器时,在实现前加入 @functools.wraps(func) 可以保证装饰器不会对被装饰函数造成影响.比如,在 Flask 中,我们要自己重写 login_required 装饰器,但不想影响被装饰器装饰的方法,则 login_req

python 修饰器 最好的讲解

Python的修饰器的英文名叫Decorator,修饰器就是对一个已有的模块做一些"修饰工作",比如在现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小装饰(小功能)侵入到原有的模块中的代码里去. Python 的 Decorator在使用上和Java/C#的Annotation很相似,就是在方法名前面加一个@XXX注解来为这个方法装饰一些东西.但是,Java/C#的Annotation也很让人望而却步,太TMD的复杂了,你要玩它,你需要了解一堆An