函数式编程是Python中的编程范式之一。它将计算视为数学函数的评估,并避免状态和可变数据。我正在尝试了解 Python 如何结合函数式编程。
考虑以下阶乘程序 ( factorial.py
):
def factorial(n, total):
if n == 0:
return total
else:
return factorial(n-1, total*n)
num = raw_input("Enter a natural number: ")
print factorial(int(num), 1)
该代码避免了可变数据,因为我们没有更改任何变量的值。我们只是用新值递归调用阶乘函数。
- 如果上面给出的函数式编程示例是正确的,那么避免状态意味着什么?
- 函数式编程是否仅意味着我在进行计算时必须仅使用函数(如上例所示)?
- 如果给定的示例有误,请提供一个带有解释的简单示例?
最佳答案
该示例对于函数式编程是正确的。 这是一个很好的例子,说明了在 Python 中不做什么,因为它效率低下且无法扩展。 Python 没有任何尾部调用优化,因此不应仅使用递归调用来避免命令式循环。如果您真的开始用 Python 进行这种风格的编程,您的程序最终将以运行时错误结束。
您正在描述纯函数式编程,这不是 Python 可以用来做的事情。
Python 在某种程度上支持函数式编程,因为函数是一等值。这意味着函数可以传递给其他函数并作为函数的结果返回。标准库包含大多数函数式编程语言标准库中也有的函数,例如 map()
、filter()
、reduce()
、以及 functools 中的内容和 itertools模块。
关于python - Python 中的函数式编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24949635/