面向对象--》类--》class
面向过程--》过程--》def
函数式编程--》函数--》def
使用这些方法具有可提高代码的复用性和可扩展性,面向对象过程编程可以理解为 没有返回值的函数式编程
函数式编程中:函数返回值数 = 0 返回None
=1 返回object(即序列就是序列,字符串就是字符串)
>1 返回元组
参数组:例如 fun(*args) 接收N个位置参数 如(1,2,3,4,5)
fun(**args)接收N个关键字参数 如 字典
实例如下:
def fun1(*args):
print(args)
def fun2(**kwargs):
print(kwargs)
fun1(*[1,2,3])
fun2(name='123')
输出为:
(1, 2, 3)
{'name': '123'}
局部变量与全局变量:
局部变量一般存在于函数内部,
全局变量一般 定义在第一级,
在函数内部修改全局变量需要添加global申明,但是尽量不要在函数内部修改全局变量,也不要在函数内定义全局变量
函数内部可修改 定义的全局list变量等较复杂变量 ,但不能修改字符串和整数变量
如:
list1 = [1,2]
num = 10
str1 = "hclln"
def fun():
list1[0] = 999
num = 5
str1 = "1234"
fun()
print(list1)
print(num)
print(str1)
输出为:
[999, 2]
10
hclln
递归函数:
特性:1)必须要有一个明确的退出条件
2)每次进入更深一层递归时,问题规模比上次递归应有所减少
3)递归效率不高,递归层次过多会导致栈溢出(一般只允许递归999次)
如:
def fun(n):
print(fun(n+1))
fun(0)
错误如下:
Traceback (most recent call last):
File "F:\eclipse-workspace\algorithm\src\MMP.py", line 9, in <module>
fun(0)
File "F:\eclipse-workspace\algorithm\src\MMP.py", line 7, in fun
print(fun(n+1))
File "F:\eclipse-workspace\algorithm\src\MMP.py", line 7, in fun
print(fun(n+1))
File "F:\eclipse-workspace\algorithm\src\MMP.py", line 7, in fun
print(fun(n+1))
[Previous line repeated 995 more times]
RecursionError: maximum recursion depth exceeded
高阶函数:
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数
如:
def add(x,y,f):
return f(x)+f(y)
res = add(3,-6,abs)
print(res)
输出为:
9