编程范式(programming paradigm),即编程风格。当前有许多不同的编程范式。要
达到专业程序员水平,则需要学习面向对象编程或函数式编程范式。、
过程式编程(procedural programming):这种编程风格要求你编写一系列步骤来解决问题,每步都会改变程序的状态。在过程式编程中,写
的是“先做这个,再做那个”这样的代码。示例如下:
x = 2
y = 4
z = 8
xyz = x + y + z
xyz
上例中每行代码都改变了程序的状态。首先,定义了x,随后定义y,然后是z。最
后,定义xyz的值。
函数式编程
函数式编程(functional programming)源自拉姆达运算(lambda calculus):世界上
最小的通用编程语言(由数学家阿隆佐·邱奇发明)。函数式编程通过消除全局状态
,解决了过程式编程中出现的问题。函数式程序员依靠的是不使用或不改变全局状态
的函数,他们唯一使用的状态就是传给函数的参数。一个函数的结果通常被继续传
给另一个函数。因此,这些程序员通过函数之间传递状态,避免了全局状态的问题
,也因此消除了由此带来的副作用和其他问题。
函数式编程的专业术语很多,有人下过一个还算精简的定义:“函数式代码有一个特
征:没有副作用。它不依赖当前函数之外的数据,也不改变当前函数之外的数据。”并给
出了一个带副作用的函数。示例如下:
a = 0
def increment():
global a
a += 1
不带副作用的函数,示例:
def increment(a):
return a + 1
第一个函数有副作用,因为它依赖函数之外的数据,并改变了当前函数之外的数据
—递增了全局变量的值。第二个函数没有副作用,因为它没有依赖或修改自身之外的
数据。
面向对象编程
面向对象(object-oriented)编程范式也是通过消除全局状态来解决过程式编程引发
的问题,但并不是用函数,而是用对象来保存状态。
在面向对象编程中,类(class)定义了一系列相互之间可进行交互的对象。
每个对象都是类的示例。如果定义了一个叫Orange的类,然后创建两个Orange对
象,那么每个对象都是Orange类的实例;它们的数据类型相同,都是Orange。对象和
实例这两个术语可以替换使用。在定义类时,该类的所有实例是类似的:都拥有类中定
义的属性,如颜色或种类,但是每个实例的具体属性值是不一样的。
编程范式:编程风格。
状态:程序运行时其内变量的值。
全局状态:程序运行时其内全局变量的值。
过程式编程:该编程风格要求编写一系列步骤来解决问题,每一步都会改变程序的状态
函数式编程:函数式编程通过函数传递消除了全局状态,解决了过程式编程中出现得问题。
副作用:改变全局变量的值。
面向对象:定义相互之间可交互的对象的编程范式。
类:程序员对类似对象进行分类分组的一种手段
方法:类似函数,但其是在类中定义的,只能在类创建的对象上调用方法。
实例:每个对象都是类的一个实例。类的每个实例与该类的其他实例拥有相同的数
实例变量:属于对象的变量。
魔法方法:Python在特殊情况下使用的方法,如对象初始化。
类的实例化:使用类创建一个新对象。
来源:https://www.cnblogs.com/clda/p/12253871.html