Python心得基础篇【2】函数

  1. 去除空格:两端:strip();末尾空格rstrip();开头空格lstrip()

  2. 大小写相关:首字母大写title();全大写upper();全小写lower()

  3. 元素:添加到末尾append();插入元素insert(索引,值);删除元素,且不再使用del;删除末尾元素,并使你能继续访问,可存储pop(索引);删除元素但不知其位置remove(),分隔单词split(),计数count()

  4. 其他:int(),str(),随机数random.randrange(,);时间停顿time.sleep()

  5. 数字大小比较:min;max;sum

  6. 列表相关指令:排序sort()、sorted;反转(永久性修改列表元素顺序,再次调用可恢复)reverse();变成列表list;遍历所有索引和元素enumrate;长度len;把要传入的元素做为一个整个添加到集合中set()集合update方法:是把要传入的元素拆分,做为个体传入到集合中

       

      7.字典相关指令:返回键值对items();字典.keys(),.values()(返回的是列表)

 

自定义函数

一、背景

在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下

while True:
    if cpu利用率 > 90%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
  
    if 硬盘使用空间 > 90%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接
  
    if 内存占用 > 80%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接

腚眼一看上述代码,if条件语句下的内容可以被提取出来公用,如下:

def 发送邮件(内容)
    #发送邮件提醒
    连接邮箱服务器
    发送邮件
    关闭连接
  
while True:
  
    if cpu利用率 > 90%:
        发送邮件('CPU报警')
  
    if 硬盘使用空间 > 90%:
        发送邮件('硬盘报警')
  
    if 内存占用 > 80%:

对于上述的两种实现方式,第二次必然比第一次的重用性和可读性要好,其实这就是函数式编程和面向过程编程的区别:

  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

函数式编程最重要的是增强代码的重用性和可读性

 二、 函数的定义和使用

函数的定义主要有如下要点:

  • def:表示函数的关键字
  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

以上要点中,比较重要有参数和返回值:

1、返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

 1 def 发送短信():
 2      
 3     发送短信的代码...
 4  
 5     if 发送成功:
 6         return True
 7     else:
 8         return False
 9  
10  
11 while True:
12      
13     # 每次执行发送短信函数,都会将返回值自动赋值给result
14     # 之后,可以根据result来写日志,或重发等操作
15  
16     result = 发送短信()
17     if result == False:
18         记录日志,短信发送失败...

2、参数

函数的有三中不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数

lambda表达式

对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

# ###################### 普通函数 ######################
# 定义函数(普通方式)
def func(arg):
    return arg + 1
  
# 执行函数
result = func(123)
  
# ###################### lambda ######################
  
# 定义函数(lambda表达式)
my_lambda = lambda arg : arg + 1
  
# 执行函数
result = my_lambda(123)

 递归

利用函数编写如下数列:

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368...

1 def func(arg1,arg2):
2     if arg1 == 0:
3         print arg1, arg2
4     arg3 = arg1 + arg2
5     print arg3
6     func(arg2, arg3)
7   
8 func(0,1)

 

posted @ 2018-01-25 22:18  麻爪棒棒鸡  阅读(177)  评论(0编辑  收藏  举报