函数
一、背景
在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
上面代码可以看出,整个发邮件的代码都是重复的,可以优化成以下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
优化后的代码无论是从可读性还是重用性上都要比之前的代码要好,这就是函数式编程和面相过程变成的区别:
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面相对象:对函数进行分类和封装,让开发“更快更好更强”
函数式编程最重要的是增强代码的重用性和可读性。
二、函数的定义和使用
1 2 3 4 5 |
|
函数的定义主要有如下五点:
- def:函数的关键字,python解释器读到这里,知道是要定义函数了
- 函数名:函数的名称,日后通过函数名来调用函数
- 函数体:函数中进行一系列的逻辑计算,
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。让调用者知道,函数是否执行成功。
1、返回值
返回值用来告知调用者函数是否执行成功
1 2 3 4 5 6 7 8 9 10 11 |
|
从上面的结果可以看出,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。
2、参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
以上例子可以看出,如果没有参数,无法自定义邮件内容,不灵活。带参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
a.普通参数(严格按照顺序,将实际参数赋值给形式参数)
1 2 3 4 5 6 |
|
b.指定参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
c.默认参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
默认参数必须放置在参数列表的最后,如果调用函数时不指定,则默认输出定义函数时定义的值。
d.动态参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
e.万能参数 (*args,**kwargs)?
1 2 3 4 5 6 7 8 9 10 11 |
|