记录学习的点点滴滴-150天从python小白到大神的转变day(12-14)
函数这一部分的内容主要包含了四大部分的内容:函数的定义,函数的调用,函数的分类和函数的应用。函数应用包含高阶函数,装饰器以及迭代器。
在定义一个函数的时候,必须要考虑两个问题:一个是该函数是否需要形式参数,一个是该函数是否需要返回值。形式参数决定了函数在实现功能的时候是否需要从函数外部获取数据;返回值决定了函数在执行完函数体之后产生新的数据是否在函数外部使用。
一个完整的函数定义应该包括:def关键字,函数名,形参列表,函数说明文档,函数体以及返回值。
定义函数的语法:
def 函数名(形参列表):
函数说明文档
函数体
返回值
如果一个函数功能的实现需要从函数外部获取数据,则这个函数就需要参数。在python中形式参数分为两种:一种是普通参数,一种是不定长参数。当需要参数的个数不确定时,可以采用不定长参数。不定长参数也分为两种:*变量和**变量。同时如果在定义函数的时候有需要,也可以给形参赋默认值。
参数默认值:
参数默认值是指在定义函数的时候,可以先给一个或多个形参赋默认值。有默认值的参数可以传参,也可以不传参。且无默认值的参数必须要在有默认值的参数之前。
def sum_two(a, b=10):
sum1 = a + b
return sum1
普通形式参数:
一般的形参在定义函数的时候,定义了几个,在调用时就需要传几个实参。并且,形参和实参的数据类型需要一一对应。
不定长参数:
不定长参数分为两种:*变量和**变量。不同的不定长参数使用场景不一样。
不定长参数类型 | 使用方法 |
---|---|
*变量 | 参数传入函数内部会以元组的形式保存,在传参的时候,需要采用位置参数传参。 |
**变量 | 参数传入函数内部会以字典的形式保存。在传参的时候,需要采用关键字参数传参。 |
-
函数的返回值(return)
函数的返回值:
如果在函数执行完毕之后产生了新的数据,且在函数外部需要使用这些数据,就需要在定义函数的时候给函数定义一个返回值。返回值的意义在于,把函数内部的数据传递到函数外部。 如何获取函数的返回值:
调用函数表达式的结果就是函数的返回值。所以在函数外部获取调用函数表达式的结果就是在获取函数的返回值。
-
全局变量和局部变量
python 中变量可以分为局部变量和全局变量。
全局变量是指定义在函数和类之外的变量,从定义开始到文档结束都可以使用。
局部变量是指定义在函数内部的变量,只能在函数中使用。从定义开始到函数结束都可以使用。
global关键字:
global关键字的作用是在函数体内部声明一个全局变量。需要先声明再使用。
语法:
global 变量
变量 = 数据
-
函数的调用
函数的调用,只能调用已经定义过的函数。
语法:
函数名(实参)
1. 调用函数中的实参分类:
实际参数根据传递方式的不同可以分为位置参数和关键字参数。
位置参数:
位置参数在使用的时候必须和形参一一对应。
关键字参数:
关键字参数可以不和形参一一对应。当位置参数和关键字参数混用时,位置参数必须在关键字参数之前。
-
函数的分类
根据函数的表现形式,可以将函数分为普通函数和匿名函数。普通函数就是采用def关键字定义的函数。但在实际的运用过程中,有些函数的功能十分简洁,用一句代码就能完事。封装这样的代码时,可以采用匿名函数进行封装。
匿名函数的语法:
lambda 形参列表:返回值
一般在完成匿名函数的功能时,多与三目运算符,列表推导式这两个知识点结合运用。
三目运算符知识点补充:
语法结构: 表达式1 if 条件语句 else 表达式2 —> 先判断if条件语句的结果是true还是false,如果为true则执行表达式1,如果为false则执行表达式2。
-
函数的应用
Python中函数的应用主要在三个大的方面,一是实参高阶函数,二是装饰器,三是迭代器和生成器。这三个方面也是函数知识点中的重中之中。
-
实参高阶函数
实参高阶函数的概念:如果一个函数的参数也是函数,那么这个函数就是实参高阶函数。在这一部分当中,重点需要掌握的是系统高阶函数。常见的主要有以下五种:
类型以及功能说明 函数的常见用法 实参高阶函数的用法 max函数:求序列中元素的最大值 max(序列):求序列中元素的最大值 max(序列,key=函数):
按照某种指定的规则求序列中元素的最大值。指定的规则取决于函数如何定义。min函数:求序列中元素的最小值 min(序列):求序列中元素的最小值 min(序列,key=函数):
按照某种指定的规则求序列中元素的最小值。指定的规则取决于函数如何定义。sorted函数:对指定序列进行排序(按照从小到大的顺序进行排序) sorted(序列):对指定序列进行排序(按照从小到大的顺序进行排序) sorted(序列,key=函数)😐
按照某种指定的规则对指定序列中的元素进行排序。参数reverse决定是升序排序还是降序排序map函数:使用指定序列中的元素按照某种变换产生新序列(注意对比联系列表推导式) / map(函数,序列1,序列2):使用指定序列1和序列2中的元素按照某种变换,产生新的序列(序列1中的元素个数必须与序列2中元素个数相等) reduce函数:将指定序列中的元素按照指定规则合并成一个数据 / reduce(函数,序列,初始值):
将指定序列中的元素按照指定规则合并成一个数据要掌握实参高阶函数,一定要在实际中多加运用,可以在网上找一些题,多多练习。
-
装饰器
函数板块中重要的知识点之一装饰器。装饰器存在的意义:为已经存在的函数添加新的功能。
添加的新功能如果需要从外部获取数据才能实现功能,那么需要采用有参装饰器。如果不需要从外部获取数据就能完成新添加的功能,就可以采用无参装饰器。
- 无参装饰器的固定写法:
无参装饰器 = 实参