函数
可变/不可变类型
- 所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变
- 可变类型有: 列表、字典、集合
- 不可变类型有: 数字、字符串、元组
递归函数
- 定义: 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数
- 作用: 简化循环
匿名函数
-
关键字: lambda
-
格式: lambda [arg1 [,arg2,…argn]]:expression
- lambda 参数1,参数2… :返回值
- expression是函数的一个表达式,用于计算返回值。
- 匿名函数不能直接调用print,因为lambda需要一个表达式
-
应用场合
-
函数作为参数传递
- 1–自己定义函数
- 2–作为内置函数的参数
-
-
lambda是没有函数名的 但是可以使用变量接收,变量内储存的是函数的引用
-
可以省略参数
- 用的很少
-
返回值不能自动组包
-
返回值可以为None,但是不能省略
-
lambda函数可以当做变量进行传递
-
他只是函数的一种特殊的书写方式
-
返回值内容可以是表达式(三木运算符),值,变量,函数(一般有返回值,没有返回值返回None,返回过程中函数会被执行)
-
sort
- 容器.sort(key=lambda 元素:排序依据)
高阶函数
-
enumerate
- 该函数可以在迭代序列时同时跟踪元素索引,返回一个由索引及其对应元素组成的迭代器。如下例子所示,enumerate()使我们可以访问元素的索引`
-
在一个函数中传入了函数的引用
-
map
-
使用容器中的每一个元素依次与函数进行计算,得到的结果返回map对象中
- map对象是一个可迭代对象
-
-
reduce
- 使用容器中的元素进行累计计算,每一次计算的结果保存到reduce中,进行下一次计算时,第一个参数填入保存的数据
-
filter
-
使用容器中的每一个元素依次与函数进行计算,得到的结果如果是true就将其添加到filter对象中
- filter对象是一个可迭代对象
-
-
以上三个内置高阶函数不对原数据产生影响
函数使用注意事项
-
1–自定义函数
- 1–无参数,无返回值
- 2–无参数,有返回值
- 3–有参数,无返回值
- 4–有参数,有返回值
- 5–函数名不能重复
-
2–调用函数
- 1–调用的方式: 函数名([实参列表])
- 2–如果调用的函数 在定义时有形参,那么在调用的时候就应该传递参数
- 3–调用时,实参的个数和先后顺序应该和定义函数中要求的一致
- 4–如果调用的函数有返回值,那么就可以用一个变量来进行保存这个值
-
3–作用域
- 1–在一个函数中定义的变量,只能在本函数中用(局部变量)
- 2–在函数外定义的变量,可以在所有的函数中使用(全局变量)