1.函数的参数
- 多个参数逗号隔开:
def 函数(参数1,参数2):
print(参数1, 参数2)
return(true)
- 形参实参
- 形参:定义函数时设置的参数
- 实参:调用函数时传入的参数
- 关键字参数
- 在实参前面加上关键字索引,如:
函数(参数2 = "我是参数2", 参数1 = "我是参数1")
- 功能:防止参数顺序混乱⭐
- 默认参数
- 在形参后面加上参数,如:
def 函数(参数1 = "默认值1",参数2 = "默认值2"):
- 虽然有默认值,但仍然可以在函数调用时给它(形参)重新赋值
- 功能:防止参数漏掉赋值导致错误⭐
收集参数
- 把参数前面加上*,如
def 函数(*参数参数,参数1):
print(len(参数参数)) # 可以识别形参的个数
print(参数[索引]) # 以元组形式调用形参中的参数
- 调用↓
函数(1, 2, 3, "ivcc", 参数1 = "love")
- 功能:拓展功能
2.函数文档
- 语法:在函数内部用单引号引注的部分
- 查看:有两种方法
函数.__doc__
,不方便查看,因为换行符直接打印出来了help(函数)
,更方便查看,对换行符进行了转意
3.返回值
- python函数的返回值可以是多个 或 多种类型,如:
def back():
return [1, "二", 3.14]
- 使用方法类似将一组返回值打包成列表 或 元组
4. 局部变量全局变量
- 局部变量local variable ;全局变量global variable
- 全局变量使用要小心
- 如果在函数内部修改全局变量的值,python将会在函数内部建立一个与全局变量一样的局部变量,修改值不影响全局变量
- 如果要在函数内部修改全局变量,可使用
global
关键字,如:
数字1 = 5
def 函数():
global 数字1
数字1 = 10
5.内嵌函数
- 内嵌函数只能在它的父级函数内被调用
6.闭包
- closure
- 如果一个内部函数对父级函数内的变量进行引用,内部函数就被认为是闭包
- 内部函数要改变父级函数中的变量值的话,可以使用列表形式,如x[0]作为变量,因为列表是直接存放在堆里面,不存放在栈里面;也可以使用
nonlocal
关键字,如:
nonlocal x
- 用法和global相似
7.lambda表达式
- 语法:
lambda x : 2 * x + 1
lambda x, y : 2 * x + y
- 调用
g = lambda x : 2 * x + 1
- 特点:
- 将函数形式转化为表达式, 省下了定义函数的过程,使代码更加简洁
- 不需要考虑命名的问题
- 增加了可读性,不用跑去看函数使怎么定义的
- 不占用内存资源
- 注:如果使用函数,则可能(猜想)会一直占用内存资源
8.BIF
- 语法:
filter[function or none, iterable]
- 将iterable(可迭代对象,如列表),中的元素带入function中计算,并返回值为真的元素。
- 如果function为none,则返回iterable中的值为真的元素
- 筛选出值为真的元素
- 如:
list(filter(lambda x : x % 2, range(10)))
- map
- 语法:
- 将序列每个元素作为函数的参数进行加工,直到序列的每个元素都加工完毕,返回新序列
- 如:
list(map(lambda x : x % 2, range(10)))