1.1 面向过程编程
面向过程编程的思想是让程序从头到尾一步步执行,环环相扣。对于小程序和小脚本来说,面向过程是最方便的。但是面向过程也有这致命的缺点,代码的重复利用率极低,假如程序中有十次需要拿到列表里数字元素的最小值,那就要重复编写十次这个代码,很烦对不对,突然需求变了,不要最小值了,要最大值.
如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:688244617
1 list1 = [1, 2, 3, 4, 5, 6, 7]
2 list2 = [2, 3, 1, 5, 5, 3, 1]
3 list3 = [23, 456, 134, 45]
4
5 max_num = list1[0]
6 for i in list1:
7 if max_num < i:
8 ¦ max_num = i
9 print(max_num)
10
11
12 max_num = list2[0]
13 for i in list2:
14 if max_num < i:
15 ¦ max_num = i
16 print(max_num)
17
18
19 max_num = list3[0]
20 for i in list3:
21 if max_num < i:
22 ¦ max_num = i
23 print(max_num)
24
25 # 可以看到每次都要写一遍代码,重复利用率极低
1.2 函数式编程
于是函数便应运而生了,函数的出现大大增加了代码的重复利用率,并且修改起来也特别方便,程序也容易扩展。将上面的需求编写为一个函数即可,每次使用时调用函数即可,当需求变了以后,直接修改函数的代码块就可以解决。这就是函数式编程,听起来超级方便是不是,以上就是函数式编程的优点。
1 def maxNum(nums):
2 '''
3 返回nums中的最大数字
4 '''
5 max_num = nums[0]
6 for i in nums:
7 ¦ if max_num < i:
8 ¦ ¦ max_num = i
9 print(max_num)
10
11
12 list1 = [1, 2, 3, 4, 5, 6, 7]
13 list2 = [2, 3, 1, 5, 5, 3, 1]
14 list3 = [23, 456, 134, 45]
15
16 maxNum(list1)
17 maxNum(list2)
18 maxNum(list3)
19
20
21 # 使用函数极大的提高了代码的重复利用率
1.3 面向对象编程
但但但但但是,函数式编程就没有缺点了吗?当然有,要不然就不会出现面向对象编程了。
假如现在有三个角色,分别是张三、李四、王二麻子,他们的职业分别是老师、医生、建造师,需要实现的功能是吃饭、说话、教书、治疗、建造。按照函数式编程的思想,这些功能就是函数嘛,搞起:
1 def eat(name):
2 pass
3 def talk(name):
4 pass
5 def teach(name):
6 pass
7 def treat(name):
8 pass
9 def build(name):
10 pass
11
12 # 三个人都能吃
13 eat('张三')
14 eat('李四')
15 eat('王二麻子')
16
17 # 三个人都能说话
18 talk('张三')
19 talk('李四')
20 talk('王二麻子')
21
22 # 只有张三可以教书
23 teach('张三')
24
25 # 只有李四可以治疗
26 treat('李四')
27
28 # 只有王二麻子可以建造
29 build('王二麻子')
上面的代码看起来实现了要有的功能,但是有一个致命的问题,那就是张三好像也可以治疗和建造、李四也可以教书和建造、王二麻子也可以教书和治疗,无非不过传递参数的时候换一个人名,这明显是不允许的!要是可以做出限制就好了,教师只能去教书,不能去治疗和建造,这就是面向对象编程的思想。
来源:https://blog.csdn.net/weixin_45342712/article/details/98864538