1、函数
1.1 自定义函数
背景需求:
在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:
while True: if cpu利用率 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 硬盘使用空间 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 内存占用 > 80%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接
上述代码,if条件语句下的内容可以被提取出来公用,如下:
def 发送邮件(内容) #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 while True: if cpu利用率 > 90%: 发送邮件('CPU报警') if 硬盘使用空间 > 90%: 发送邮件('硬盘报警') if 内存占用 > 80%:
对于上述的两种实现方式,第二次必然比第一次的重用性和可读性要好,其实这就是函数式编程和面向过程编程的区别:
函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
面向对象:对函数进行分类和封装,让开发“更快更好更强...”
函数式编程最重要的是增强代码的重用性和可读性
自定义函数练习
1、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
def func(get_str): """ 计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数 :param get_str: :return: """ digit, alpha, space, other = 0, 0, 0, 0 # 数字 字母 空格 其他 for i in get_str: if i.isdigit(): digit += 1 elif i.isalpha(): alpha += 1 elif i.isspace(): space += 1 else : other += 1 return digit, alpha, space, other def main(): get_str = input("请输入一个字符串:") result = func(get_str) # print(result) print( """ ============================ 数字:%s 字母:%s 空格:%s 其他:%s ============================""" % result) if __name__ == '__main__': main()