python函数

一、函数(封装代码,高效的代码重用

 

1、 函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求

函数在开发过程中,可以更高效的实现代码重用

2、 定义函数

def 函数名(参数):

              代码1

              代码2

调用函数

        函数名(参数)

 

注意:不同的需求,参数可有可无

          1)、函数必须先定义再使用

          2)、如果没有调用函数,函数里面的代码不会执行

          3)、函数执行流程:

当调用函数的时候,解释器回到定义函数的地方去执行下方缩进的代码,当这些代码执行完,回到调用函数的地方继续向下执行

定义函数的时候,函数体内部缩进的代码并没有执行

3、 函数参数的作用:函数调用的时候可以传入真实数据,增大函数的使用的灵活性

形参:函数定义时写的参数(非真实数据)

实参:函数调用时写的参数(真实数据)

4、 函数返回值:return返回结果给函数调用的地方

return作用:负责函数返回值

                     退出当前函数,导致return下方的所有代码(函数体内部)不执行

5、 函数说明文档

定义完函数1)第一行:“”“ 说明文字 ”“”

                 2)“”“

                      函数说明

                      参数1

                      参数2

                      返回值

      ”“”

              查看:help(函数名)

6、 函数嵌套:一个函数里面又调用了另外一个函数

 

二、函数2

 

1、 变量的作用域:局部变量和全局变量

局部变量作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量

全局变量作用:在函数体内、外都能生效的变量

               修改:global 变量名

2、 多返回值

return a,b 写法,返回多个数据的时候,默认是元组类型

return后面可以链接列表、元组或字典,以返回多个值

3、 参数

1) 位置参数:调用函数时根据函数定义的参数位置来传递参数

传递和定义参数的顺序及个数必须一致

2) 关键字参数:函数调用,通过“键=值”形式加以指定

函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

3) 缺省参数:(默认参数)为参数提供默认值

调用函数时可不传该默认参数的值(所有参数必须出现在默认参数前,包括函数定义和使用)

函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值

4) 不定长参数:(可变参数)用于不确定调用的时候会传递多少个参数(不传参也可以)

可以用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递

      包裹位置参数:参数为*args

                            传进的所有参数都会被args变量收集,他会根据传进参数的位置合并为一个元组,args是元组类型

                     包裹关键字传递:参数为**kwargs

                                   返回一个字典

                     无论包裹位置传递还是包裹关键字传递,都是一个组包的过程

4、 拆包

  元组、字典

5、 交换变量值

  1) 借助第三变量存储数据

  2) x, y = y, x

6、 引用

  Python中,值是靠引用来传递的            

  可以用id()来判断两个变量是否为同一个值的引用

  引用可以当做实参

7、 可变类型:列表、字典、集合

  不可变类型:整型、浮点型、字符串、元组

 

三、递归、lambda表达式(匿名函数)、高阶函数

 

1、 特点:函数内部自己调用自己

      必须有出口

2、 如果没有出口,报错,超出最大递归深度

3、 一个函数有一个返回值,并且只有一句代码,可以使用lambda简化

语法: lambda 参数列表:表达式

注意:lambda的参数可有可无,函数的是参数在lambda中完全适用

         lambda能接收任何数量的参数但只能返回一个表达式的值

1)带判断的lambda

print((lambda a, b: a if a > b else b)(1000, 500))

2)列表数据按字典key值排序

 Students =[{‘name’:’tom’, ‘age’: 18}]

Stuents.sort(key = lambda x: x[‘name’’], reverse = True)   按姓名降序

                                                                                     False:降序

4、 参数形式:

无参数

一个参数

默认参数

可变参数*args  :返回值为元组

可变参数**kwargs :返回值为字典

5、 高阶函数:把函数作为参数传入

内置高阶函数:

1):map(func,lst):将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(python2)或者迭代器(python3)

 2):reduce(func,lst):其中func必须有两个参数,每次func计算的结果继续和序列的下一个元素做累积计算(需导入函数functools

 3)filter(func,lst):用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换为列表,使用list()来转换

posted @ 2021-02-28 15:31  riyuexiaoyao  阅读(63)  评论(0编辑  收藏  举报