Python 3.x - 返回另一个函数的简单函数

标签 python python-3.x function currying

我最近才开始用 Python 编程,我一直在尝试创建一个简单的函数,它接受两个参数 a 和 b,并返回 a 和 |b| 之和的结果。我想返回 f(a, b) 而不仅仅是 f。我知道我在当前代码中将 f 指定为一个 int,因此当我运行时它会返回“int not callable error”。所以我必须将 f 指定为某种函数。我很确定我在这里遗漏了一些基本的东西,我只是不确定到底是什么。感谢您的帮助!

from operator import add, sub

def a_plus_abs_b(a, b):
    """Return a+abs(b), but without calling abs.

    >>> a_plus_abs_b(2, 3)
    5
    >>> a_plus_abs_b(2, -3)
    5
    """
    if b < 0:
        f = sub(a, b)
    else:
        f = add(a, b)
    return f(a, b)

最佳答案

f = sub(a, b)

它不创建计算结果的函数,因此当您调用 f(a, b) 时,您调用的是一个整数。

要修复它,请将函数分配给一个三元内联函数,以根据 b

的符号选择要创建的函数
f = sub if b < 0 else add

关于Python 3.x - 返回另一个函数的简单函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48429427/

相关文章:

JavaScript - ES6 函数由于某些奇怪的原因无法工作

Python:同时打印列表中的所有字符串

javascript - 更改 Nodejs 中类的行为 (javascript)

python - 在网站中两个字符串的子字符串之间提取

python - 如何在 Ubuntu Trusty 上安全地使用 pip(带 SSL)?

database - 在 django admin 中更改字段名称

python - Pyramid :如何在 View 中获取所有应用程序的路线?

Python:在函数名中使用空格?

python - 使用 re 和 urllib.request 模块

python - 如何使用scikit-image使用最近的邻居插值来调整标记蒙版的大小