Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python编程功能代码与命令代码_Python_Functional Programming_Imperative Programming - Fatal编程技术网

Python编程功能代码与命令代码

Python编程功能代码与命令代码,python,functional-programming,imperative-programming,Python,Functional Programming,Imperative Programming,因此,我目前正在学习3种主要编程范式。我知道python同时使用函数和命令范式。为了在明天的考试之前更好地理解这一点,我正在寻找这些范例中每一个的python简短示例代码。谢谢大家! 给定L=[1,2,3,4,5]我们可以用两种方法计算总和 命令: sum = 0 for x in L: sum += x naturalNumbers = [0,1,2,3,4,5,6,7,8,9] def printEvenNumbers (listOfNumbers): for x in

因此,我目前正在学习3种主要编程范式。我知道python同时使用函数和命令范式。为了在明天的考试之前更好地理解这一点,我正在寻找这些范例中每一个的python简短示例代码。谢谢大家!

给定
L=[1,2,3,4,5]
我们可以用两种方法计算总和

命令:

sum = 0
for x in L:
    sum += x
naturalNumbers = [0,1,2,3,4,5,6,7,8,9]

def printEvenNumbers (listOfNumbers):
    for x in listOfNumbers:
        if x % 2 == 0:
            print True
        else:
            print False
功能(本地功能):

函数式(lambda表达式):


(当然,内置的
sum
函数将有效地执行与这两个函数相同的操作。)

您可以通过两种方式反转字典:

def reverse_mapping1(map):
    return {v:k for k, v in map.items()}

def reverse_mapping2(map):
    inverse = {}
    for k, v in map.iteritems():
        inverse[v] = inverse.get(v, [])
        inverse[v].append(k)
    return inverse

这不是真正的函数式编程,但它确实提供了一种解决问题的不同方式,我认为你的老师正试图做到这一点。

思考命令式和函数式范例之间区别的一种方式是,使用命令式,你必须显式地编写操作顺序(我在这里使用非常松散的语言来简化它)。相比之下,函数式编程不是定义序列,而是声明您试图建模的内容(这就是为什么它有时被称为声明式编程风格)

因此,在下面的例子中,如果我想确定哪些数字在列表中是偶数,我必须显式地对循环进行编码,并在强制编码时检查每个数字是否为偶数。在函数示例中,我不需要这样做。在那个示例中,我只是定义了一个数字为偶数意味着什么,然后我就应用了这个abstra一个简单的单行程序

这两种范式之间有更多的差异,但这应该给你一个想法

命令:

sum = 0
for x in L:
    sum += x
naturalNumbers = [0,1,2,3,4,5,6,7,8,9]

def printEvenNumbers (listOfNumbers):
    for x in listOfNumbers:
        if x % 2 == 0:
            print True
        else:
            print False
功能性:

def evenNumber (x):
    return (x % 2) == 0

print(map(evenNumber, naturalNumbers))

Python有
操作符。添加
作为
+
的符号名。声明式编程和函数式编程不是一回事。这是一个非常奇怪的答案。如果算法是函数式、过程式或OOO,那么算法是命令式还是声明式都不会真正起作用。您可能会被对某些语言的熟悉弄糊涂似乎是声明性的和功能性的。