首先我们为什么要用函数式编程
我们使用函数总结了三点好处:
代码重复利用
可扩展性
保持一致性
学了函数式编程,我们以后要把逻辑和业务区分离出来,这样以来让程序变的容易扩展,当需求要添加或者改变我我们就变的容易改变。
有了这么多了好处那我们看看怎么写函数式编程:
定义函数用关键字 : def
定义函数def deom(text): deom 是函数名,text是形式参数,:冒号不能少
print(‘执行语句’)
执行函数def(a) a 是实参
现在举个代码重复利用的例子:
没有用函数。
whileTrue:if cpu利用率 > 90%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接if 硬盘使用空间 > 90%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接if 内存占用 > 80%:
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接
用了函数以后。把写好的函数放到循环语句里面就行了,减少了代码量。
def 发送邮件(内容)
#发送邮件提醒
连接邮箱服务器
发送邮件
关闭连接whileTrue:if cpu利用率 > 90%:
发送邮件('CPU报警')if 硬盘使用空间 > 90%:
发送邮件('硬盘报警')if 内存占用 > 80%:
def 函数名(参数):
...
函数体
...
返回值
函数的定义主要有如下要点:def:表示函数的关键字
函数名:函数的名称,想使用就根据函数名调用函数
函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
参数:为函数体提供数据
返回值:当函数执行完毕后,可以给调用者返回数据
1、返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
因为我们想要想要这个函数的执行结果,这个执行结果会在后面的程序运行过程中需要用到。
以上要点中,比较重要有参数和返回值:
def 发送短信():
作用域:1、局部变量
局部变量:顾名思义,指在局部生效,定义在函数体内的变量只能在函数里面生效,出个这个函数体,就不能找到它,这个函数就是这个变量的作用域。2、全局变量
有了局部变量,那就肯定有全局变量,那什么是全局变量呐?全局变量又改怎么定义呢?
全局变量:指的是在整个程序中都生效的变量,在整个代码的顶层声明。
全局变量的优先级是低于局部变量的,当函数体内没有局部变量,才会去找全局变量。但是有的同学会问了,那我需要在函数体内修改全局变量咋办呢?
改前用global先声明一下全局变量
将全局变量重新赋值
也是可以的,但是我们最好不要用以上2种情况,也就是说最好不要用global这个关键字,因为你用了,其他人调你的函数时,就乱套了,而且还不好调试,
说不定还冒着被开除的危险,所以请大家忘记它吧,只是知道有这么一个东西就行了。
小结:1、只有字符串和整数是不可以被修改的,如果修改,需要在函数里面声明global。2、但是复杂的数据类型,像列表(list)、字典(dict)、集合(set),
包括我们后面即将要学的类(class)都是可以修改的。
在子程序(函数)中定义的变量称为局部变量,在程序一开始定义的变量称为全局变量。
全局变量的作用域是整个程序,局部变量的作用域是定义该变量的子程序(函数)。
当全局变量和局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其他地方,全局变量起作用。
结论:
参数分为位置参数、关键字参数、默认参数、非固定位置参数和非固定关键字参数
位置参数之前传参,位置是不能调换的,多一个或者少一个参数都是不可以的。
函数参数位置结论 def func(name,age=18,*args,**kwargs)
得出一个结论:关键字参数是不能写在位置参数前面的。
关键字传参,可以不用考虑位置的前后问题
return 返回值,返回的是什么内容,返回给谁,内容什么都可以,返回给调用者
return 返回可以返回任意对象,和任意多个,当返回多个值是python会把多个值封装在一个元组里面病返回。
return 语句后面的语句不在执行,所以代表着函数体的结束。
如果函数体没有函数默认是返回 None