如果你的问题是“请给我一些示例,展示FP在Python中如何工作”,那么:
什么是纯函数式编程(在Python中)?
这是一种编程范式,避免使用状态和可变数据,而是依赖于函数返回值。这意味着用Python编写的纯函数式程序不会有像变量、状态等东西。
不太纯的FP
您可以将FP和命令式范式结合起来,并取得良好的结果(参见
here)。链接的代码片段是一个数学测验程序,我为之前参加的一个Python课程编写的。您可以随意使用这些代码。
Java/C# 中的FP
我个人没有C#方面的经验,所以需要其他人发布C#示例,但是您可以在Java中使用FP,但不能使用纯FP。例如:
int fib (int x) {
if (x < 2) return x;
return fib (x-1) + fib(x-2);
}
上述方法完全是函数式编程(FP),但在使用Java时无法在纯FP上下文中使用。这需要将其放置在Java类C中,并且只能在实例化该类型的对象之后调用。这最后一部分使Java类C无法符合FP,但该方法仍将是FP。
编辑:实际上,您可以在Java中拥有静态方法,这些方法可以在没有任何实例化的情况下使用。因此,如果将签名更改为`static int fib(int x)`,则在以FP方式调用方法及其方法调用时,该方法仍可能是FP的。
关于您的评论:
递归可能是FP,但不一定要这样(请参见下文):
def f(first, rest):
print first
first = rest[0]; rest = rest[1:]
f(first, rest)
没有递归也可以使用FP:
def sum (a,b):
return a+b
def square(c):
return c*c
def square_of_sum (x,y):
return square(sum(x,y))