在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方法是否会因此遭受苦难?
Lambda函数与标准函数具有相同的类型,因此其行为类似于实例方法。
partial
您示例中的对象可以这样调用:
g1(x, y, z)
导致此调用(无效的Python语法,但您知道了):
f(*secondary_args, x, y, z, **secondary_kwargs)
Lambda仅接受单个参数,并使用不同的参数顺序。(当然,这两个差异都可以克服–我只是在回答您给出的两个版本之间的差异。)
partial
对象的执行比等效对象的执行略快lambda
。问题内容: 和之间的主要区别是什么?在决定其中任何一个时是否存在性能问题? 问题答案: 是同步的,不是。
问题内容: java类文件和jar文件有什么区别? 问题答案: Jar文件是一个包含一个或多个Java类文件的Zip存档。这使得使用库(由多个类组成)更加方便。目录和Jar文件被添加到类路径,并且在运行时可用于在其中找到特定的类。
问题内容: 当我学习Haskell时,我注意到它的 type class ,这应该是源自Haskell的伟大发明。 但是,在Wikipedia页面上,类型为class: 程序员通过指定一组函数或常量名称以及它们各自的类型来定义类型类,对于每个属于该类的类型,它们必须存在。 对我来说,这似乎与 Java的接口 非常接近(引用Wikipedia的Interface(Java)页面): Java编程语言
问题内容: 我是JSP和服务器端编程的新手。到目前为止,我正在使用Servlet和Java类。我正在借助Java类隔离我的应用程序(按照MVC模型)。我想知道Java Bean和Java类之间的区别。在哪种情况下,我可以使用Java Bean代替Java类。任何有用的解释或有用的链接? 问题答案: Java bean只是一个符合某些约定的类: 可以由getter(和setter访问的属性,如果这些
问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:
问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。