📜  Python中的编程范式

📅  最后修改于: 2022-05-13 01:54:37.225000             🧑  作者: Mango

Python中的编程范式

范式也可以称为解决某些问题或完成某些任务的方法。编程范式是一种使用某种编程语言解决问题的方法,或者我们也可以说它是一种使用我们遵循某种方法可用的工具和技术来解决问题的方法。有许多已知的编程语言,但它们在实施时都需要遵循一些策略,而这种方法/策略就是范例。除了各种编程语言之外,还有很多范式可以满足每一个需求。

程序范式

Python支持三种编程范式

  • 面向对象的编程范式
  • 面向过程的编程范式
  • 函数式编程范式

面向对象的编程范式

在面向对象的编程范式中,对象是范式的关键元素。对象可以简单地定义为包含数据成员和方法函数的类的实例。此外,面向对象风格将支持封装的数据成员和方法函数联系起来,借助继承的概念,代码可以很容易地重用,但面向对象编程范式的主要缺点是,如果代码不是写得好,程序就变成了怪物。

好处

  • 与现实世界实体的关系
  • 代码可重用性
  • 抽象或数据隐藏

缺点

  • 数据保护
  • 不适合所有类型的问题
  • 速度慢

例子:

# class Emp has been defined here
class Emp:
    def __init__(self, name, age):
        self.name = name
        self.age = age
      
    def info(self):
        print("Hello, % s. You are % s old." % (self.name, self.age))
  
# Objects of class Emp has been 
# made here        
Emps = [Emp("John", 43),
    Emp("Hilbert", 16),
    Emp("Alice", 30)]
  
# Objects of class Emp has been
# used here
for emp in Emps:
    emp.info()

输出:

Hello, John. You are 43 old.
Hello, Hilbert. You are 16 old.
Hello, Alice. You are 30 old.

注意:有关详细信息,请参阅Python中的面向对象编程

过程编程范式

在面向过程的编程范式中,一系列计算步骤被划分为模块,这意味着代码按功能分组,代码是逐步串行执行的,所以基本上,它结合串行代码来指示计算机每一步执行某个任务。这种范式有助于代码的模块化,模块化通常由功能实现完成。这种编程范式有助于轻松组织相关项目,因此每个文件都充当容器。

好处

  • 通用编程
  • 代码可重用性
  • 可移植的源代码

缺点

  • 数据保护
  • 不适合真实世界的对象
  • 更难写

例子:

# Procedural way of finding sum 
# of a list 
  
mylist = [10, 20, 30, 40]
  
# modularization is done by 
# functional approach
def sum_the_list(mylist):
    res = 0
    for val in mylist:
        res += val
    return res
  
print(sum_the_list(mylist))

输出:

100

函数式编程范式

函数式编程范式是一种范式,其中一切都以纯数学函数风格绑定。它被称为声明范式,因为它使用声明夸大。它使用数学函数并将每个语句视为函数表达式,因为执行表达式以产生值。 Lambda 函数或递归是用于其实现的基本方法。范式主要关注“解决什么”而不是“如何解决”。将函数视为值并将它们作为参数传递的能力使代码更具可读性和可理解性。

好处

  • 简单易懂
  • 使调试和测试更容易
  • 增强代码的理解力和可读性

缺点

  • 性能低下
  • 编写程序是一项艰巨的任务
  • 代码可读性低

例子:

# Functional way of finding sum of a list 
import functools
  
  
mylist = [11, 22, 33, 44]
  
# Recursive Functional approach
def sum_the_list(mylist):
      
    if len(mylist) == 1:
        return mylist[0]
    else:
        return mylist[0] + sum_the_list(mylist[1:])
  
# lambda function is used
print(functools.reduce(lambda x, y: x + y, mylist))

输出:

110

注意:有关更多信息,请参阅Python中的函数式编程