在Python中,假设我有一个函数f
,我想通过周围有一些次生的参数(假设为简单起见,它只是保持变量的第一个参数)。
什么是做这两种方式(如果有的话)之间的区别是什么?
# Assume secondary_args and secondary_kwargs have been defined
import functools
g1 = functools.partial(f, *secondary_args, **secondary_kwargs)
g2 = lambda x: f(x, *secondary_args, **secondary_kwargs)
在对文档页面partial
,例如,有这样的话:
partial
类中定义的对象表现得像静态方法和实例期间不转换成绑定方法属性查找。
如果将用于制造从参数类方法提供给类(无论是在构造函数或通过函数以后)的λ-方法从这个苦?
我相信,类方法的东西只适用于类定义时分配的功能。 后来分配的功能都没有经过特殊处理。
除此之外,我个人偏爱lambda表达式因为他们是比较常见的,因此使代码更容易理解。
class Foo(object):
def __init__(self, base):
self.int = lambda x:int(x, base)
print Foo(4).int('11')
没错, lambda
从这个“苦”。 partial
是因为它是重载的调用操作,而不是一个真正的函数的对象不存在这个问题。
但是,在一个类定义使用这样的拉姆达只是滥用。
谐音并不比同等lambda表达式前面已经说了快只有约20%,但他们保持直接的裁判它们的功能涉及到。 虽然lambda表达式该函数的函数体中“埋葬”。
=>如果您只需要解决,直到所有ARG游戏已知,那么使用谐音defering一个功能评价的问题。 你必须比埋葬调用到匿名函数,即lambda表达式的方式更好内省的方法。