gpt4 book ai didi

Python:列表理解和函数式编程

转载 作者:太空狗 更新时间:2023-10-29 22:08:17 24 4
gpt4 key购买 nike

在我的Python学习书中,当我读到List Comprehension时,作者有一个小注释解释:

Python’s list comprehension is an example of the language’s support forfunctional programming concepts.

我在维基百科上阅读了有关函数式编程的内容。但我很难想象,因为我没有看到 List Comprehension 和维基页面解释的这个概念之间有任何联系。

请给我一个明确的解释(如果可以的话,再给我一些关于 Java 或 C# 函数式编程的例子 :D)

最佳答案

如果你的问题是“给我一些例子来说明 FP 如何在 python 中工作”,那么:

什么是纯函数式编程(在 Python 中)?

它是一种避免状态和可变数据而依赖于函数返回值的编程范例。这意味着用 Python 编写的纯函数式程序不会有变量、状态等。

不是那么纯粹的 FP

您可以结合 FP 和命令式范式,并获得良好的结果(参见 here)。链接的要点是我为几个月前参加的 python 类(class)制作的数学测验程序。随意使用代码做任何你想做的事。

Java/C# 中的函数式编程

我个人没有使用 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 资格,但该方法仍然是。

编辑:实际上,您可以在 Java 中使用静态方法,无需任何实例化即可使用。因此,如果您将签名更改为 static int fib (int x) ,那么如果以 FP 方式调用,则该方法及其方法调用可能仍然是 FP。


回复:你的评论

递归可以是 FP,但不一定是(见下文):

def f(first, rest):
print first
first = rest[0]; rest = rest[1:]
f(first, rest)

你也可以在没有递归的情况下使用函数式编程:

 def sum (a,b):
return a+b

def square(c):
return c*c

def square_of_sum (x,y):
return square(sum(x,y))

关于Python:列表理解和函数式编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10960085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com