当前位置: 首页 > 面试题库 >

将多个功能分配给单个变量?

谷梁楚青
2023-03-14
问题内容

在Python中,我们可以将函数分配给变量。例如,math.sine函数:

sin = math.sin
rad = math.radians
print sin(rad(my_number_in_degrees))

有没有简单的方法可以将多个函数(即一个函数的一个函数)分配给一个变量?例如:

sin = math.sin(math.radians) # I cannot use this with brackets
print sin (my_number_in_degrees)

问题答案:

我认为作者想要的是某种形式的功能链。通常,这很困难,但是对于

  1. 接受一个论点
  2. 返回一个值,
  3. 列表中上一个函数的返回值与列表中下一个函数的输入类型具有相同的返回值

我们说有一个需要链接的函数列表,其中有一个参数,然后返回一个参数。而且,类型是一致的。像这样的东西…

functions = [np.sin, np.cos, np.abs]

是否可以编写将所有这些链接在一起的 通用
函数?好吧,reduce尽管我们可以使用Guido,但它并不特别喜欢mapreduce实现,并打算将其淘汰…

像这样的东西…

>>> reduce(lambda m, n: n(m), functions, 3)
0.99005908575986534

现在我们如何创建执行此操作的功能?好吧,只需创建一个需要一个值并返回一个函数的函数:

import numpy as np

def chainFunctions(functions):
    def innerFunction(y):
        return reduce(lambda m, n: n(m), functions, y)
    return innerFunction

if __name__ == '__main__':
    functions = [np.sin, np.cos, np.abs]
    ch = chainFunctions( functions )
    print ch(3)


 类似资料:
  • 问题内容: 我想了解原始和对象引用变量的行为方式不同。我以Kathy Sierra的 OCA / OCP Java SE7中 的以下代码为例: 在上面的代码中,我获得了更改之前和之后的值。 基本变量case的输出为: 但是,在对象引用变量中,一旦更改了的值,我将获得不同的值 参考变量大小写的输出为: 书中提到在两种情况下都复制位模式并放置新副本。如果这是真的,那为什么我们会得到不同的行为呢? 问题

  • 问题内容: 我有两种想要反序列化为一个类的JSON格式。我知道我们不能将两个属性应用于一个属性。 您能否建议我实现这一目标的方法? 我希望并且两者都可以反序列化为规范类的属性。 问题答案: 一个不需要转换器的简单解决方案:只需向您的类添加第二个private属性,将其标记为,然后将其设置为第一个属性: 小提琴:https : //dotnetfiddle.net/z3KJj5

  • 我目前正在努力设置产品变化作为压缩产品目录的一种手段...我们目前有几千个单独的产品页面和变化,我正在寻找一种方法来压缩每个产品类型到一个单一的变化。销售的产品与车辆相关,因此适合每个车型的年份范围: WooCommerce的罐装可变产品为每种属性组合创造了新的变化。例如,“Body Style A”将创建两个相同的变体,我更希望有一个变体,在“年份”是2002年或2003年,而不是只指定一个值。

  • 问题内容: 我正在使用React使用渲染多个数据。 如何禁用列表中的单击按钮? 这是我的代码: 使用不起作用…我认为我无法添加状态,因为有多个按钮。 问题答案: 您应该使用而不是ref,并且是的,您需要多个ref,一个数组应该很好 根据文档: React支持可以附加到任何组件的特殊属性。ref属性具有一个功能,并且在 安装或卸载组件后立即执行。 在HTML元素上使用ref属性时,会 接收基础DOM

  • 我有一个numpy数组,一个定义数组中范围的开始/结束索引列表,以及一个值列表,其中值的数量与范围的数量相同。在循环中执行此赋值当前非常慢,因此我想以矢量化的方式将值赋给数组中的相应范围。这可能吗? 这是一个具体的简化示例: <代码>a=np。零([10]) 下面是定义a中范围的开始索引和结束索引列表,如下所示: 这是我想分配给每个范围的值列表: <代码>值=[1、2、3、4] 我有两个问题。首先

  • 问题内容: 我正在使用shell_exec方法从PHP调用test.sh。 但是,命令行脚本说它仅收到1个参数:/tmp/my_script.php 当我将呼叫更改为: 码: 它说它收到了3个参数,但是argv [1]和argv [2]为空。 当我将呼叫更改为: 码: 脚本最终将按预期接收所有3个参数。 您是否始终需要使用脚本发送仅带引号的文本,并且不允许发送$ var这样的变量?还是有一些特殊的