partial 函数

函数的partial应用

  函数在执行时,要带上所有必要的参数进行调用。但是,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。

例如:

In [9]: from functools import partial

In [10]: def add(a,b):
....: return a+b
....:

In [11]: add(4,3)
Out[11]: 7

In [12]: plus = partial(add,100)

In [13]: plus(9)
Out[13]: 109

In [14]: plus2 = partial(add,99)

In [15]: plus2(9)
Out[15]: 108

其实就是函数调用的时候,有多个参数 参数,但是其中的一个参数已经知道了,我们可以通过这个参数重新绑定一个新的函数,然后去调用这个新函数。

如果有默认参数的话,他们也可以自动对应上,例如:

In [17]: def add2(a,b,c=2):
....: return a+b+c
....:

In [18]: plus3 = partail(add,101)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/Users/yupeng/Documents/PhantomJS/<ipython-input-18-d4b7c6a6855d> in <module>()
----> 1 plus3 = partail(add,101)

NameError: name ‘partail‘ is not defined

In [19]: plus3 = partial(add,101)

In [20]: plus3(1)
Out[20]: 102

In [21]: plus3 = partial(add2,101)

In [22]: plus3 = partial(add2,101) (1)
Out[22]: 104

In [23]: plus3(1)
Out[23]: 104

In [24]: plus3(1,2)
Out[24]: 104

In [25]: plus3(1,3)
Out[25]: 105

In [26]: plus3(1,30)
Out[26]: 132

时间: 2024-09-29 23:34:52

partial 函数的相关文章

partial函数-python学习

一个函数可以有多个参数,而在有的情况下有的参数先得到,有的参数需要在后面的情景中才能知道,python 给我们提供了partial函数用于携带部分参数生成一个新函数. def add(a,b,c=2): print("a is:%s b is %s c is %s"%(a,b,c)) return a+b+c add_with_a_b=partial(add,2,3) print(add_with_a_b())# it's 7 add_with_a=partial(add,9) pri

Python之partial函数

介绍 partial其实是Python模块functools中定义的一个函数,当我们需要经常调用某个函数时,但是其中某些参数是已知的固定值,这样可能会让代码显得冗余,这个时候就可以考虑使用partial函数. 使用 假设我们要做二进制转十进制 int('1000000', base=2) # 64 int('1010101', base=2) # 85 如果我们要重复使用这个函数,需要重复写的东西就会很多 但是如果我们使用partial from functools import partial

python 高阶函数: Partial(偏函数)

格式: functools.partail(函数,函数的参数) -------> int(x, base) ----->  functools.partial(int, base) 一.int函数 官网介绍:class int(x, base=10)  #x为字符串数字, 默认该字符串数字是十进制数, 返回值是十进制数 #!/usr/bin/python ##普通使用print "int('10001', 2):", int('10001', 2)  #字符串数字'1000

underscore 复习 对象函数 篇章

_.partial = function(func) { var boundArgs = slice.call(arguments, 1); var bound = function() { var position = 0, length = boundArgs.length; var args = Array(length); for (var i = 0; i < length; i++) { args[i] = boundArgs[i] === _ ? arguments[positio

python函数及函数式编程

函数是对程序逻辑进行结构化或过程化的一种编程方法.函数与过程相比,两者都是可以被调用的实体,但是传统意义上的函数或者"黑盒",可能不带任何输入参数,经过一定的处理,最后向调用者传回返回值,而过程是简单.特殊.没有返回值的函数.其实,python的过程就是函数,因为在函数中如果没有显式return返回值的话,解释器会隐式地返回默认值None. 1.函数定义 def foo([argument-list]): "function_document_string" foo

最新版EJS的include函数已支持参数传递

最新版的express中partial函数已经被移除,使用include虽然可以实现同样的效果,但是代码看起来很不爽比如 1 <%-partial("user/home",{user:users[0]})%> 使用include写法为 1 <% var user=users[0]; include user/home %> 但是EJS2.0+版本已经支持这样的写法 1 <%-include("user/home",{user:users

python学习总结(函数进阶)

-------------------程序运行原理------------------- 1.模块的内建__name__属性,主模块其值为__main__,导入模块其值为模块名 1.创建时间,py文件比pyc文件新,则从新生成pyc. 2.magic num,做运行前版本测试,版本不同重新生成pyc. 3.PyCodeObject对象,源代码中的字符串,常量值,字节码指令,原始代码行号的对应关系. 2.LEGB规则 1.Local :本地 当前所在命名空间(如函数,模块),函数的参数也属于命名空

对python 函数的一些理解

函数的传参 让一个函数接受任意数量的位置参数,可以使用一个 * 参数 def avg(first , *rest): return (first + sum(rest)) / (1 + len(rest)) print(avg(1,2,3)) 为了接受任意数量的关键字参数,使用一个以 ** 开头的参数 import html def make_element(name , value , **attrs): keyvals = [' %s="%s"' % item for item i

python【4】-函数

一. 定义函数 定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回.如果没有return语句,函数执行完毕后也会返回结果,只是结果为None.. def add(a,b): return a+b print add(1,2) 定义空函数可以用pass def nop(): pass 定义函数时,需要确定函数名和参数个数: 如果有必要,可以先对参数的数据类型做检查,数据类型检查可以用内置函数isinstance实