函数的基本概述
在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,可以思考一下如果有某个功能的代码是在多个地方使用的是否可以只写一次?此时的代码该如何定义。先观察以下的案例:
while True:
if cpu利用率 > 90%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
if 硬盘使用空间 > 90%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
if 内存占用 > 80%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
以上代码中每个if条件语句下内容可以被提取出来公用 例:
def 发送邮件(内容)
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
while True:
if cpu利用率 > 90%:
发送邮件('CPU报警')
if 硬盘使用空间 > 90%:
发送邮件('硬盘报警')
if 内存占用 > 80%:
发送邮件('内存报警')
对于上述的两种实现方式,第二次必然比第一次的重用性和可读性要好,可以减少大量的代码量,减少开发时间,一处定义,多处调用,其实这就是函数式编程
函数式编程的概念:
开发程序时,需要某块代码多次使用,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数
函数的定义和调用
<1>定义函数
定义函数的格式如下:
def 函数名():
代码
demo:
# 定义一个函数,能够完成打印信息的功能
def printInfo():
print '------------------------------------'
print ' 人生苦短,我用Python'
print '------------------------------------'
函数的定义主要有如下要点:
? def:表示函数的关键字 ? 函数名:函数的名称,调用时根据函数名调用函数
? 函数体:函数中进行一系列的逻辑计算或是该函数的功能内容。
? 参数:为函数体提供数据
? 返回值:当函数执行完毕后,可以给调用者返回数据。
<2>调用函数
定义了函数之后,就相当于有了一个具有某些功能的代码,想要让这些代码能够执行,需要调用它(注意在定义函数时里面的内容不会执行)
调用函数很简单的,通过 函数名() 即可完成调用
demo:
# 定义完函数后,函数是不会自动执行的,需要调用它才可以
printInfo()
<3>函数的文档说明
例:
>>> def test(a,b):
... "用来完成对2个数求和"
... print("%d"%(a+b))
...
>>>
>>> test(11,22)
33
执行,以下代码
>>> help(test)
能够看到test函数的相关说明
==============================================
Help on function test in module __main__:
test(a, b)
用来完成对2个数求和
(END)
=============================================
函数的参数-返回值
<1> 定义带有参数的函数
示例如下:
def addnum(a, b):
c = a+b
print c
<2> 调用带有参数的函数
以调用上面的add2num(a, b)函数为例:
def addnum(a, b):
c = a+b
print c
add2num(11, 22) #调用带有参数的函数时,需要在小括号中,传递数据
小总结:
? 定义时小括号中的参数,用来接收参数用的,称为 “形参”
? 调用时小括号中的参数,用来传递给函数用的,称为 “实参”
ps:后面会有单独一篇详解函数参数的博客
<3> 带有返回值的函数
如下示例:
def add2num(a, b):
c = a+b
return c
保存函数的返回值示例如下:
#定义函数
def add2num(a, b):
return a+b
#调用函数,顺便保存函数的返回值
result = add2num(100,98)
#因为result已经保存了add2num的返回值,所以接下来就可以使用了
print result
结果:
198
在python中我们可以返回多个值
>