函数的定义及调用
定义一个函数之后如果不调用,函数是不会执行的
调用函数
函数的参数
参数分为实参和行参
行参:位置参数 默认参数 可变参数 关键字参数
1)参数的使用
定义一个加法函数sum_2_sum()
但是这样需要每次去更改num1和num2的值,我们可以将num1和num2作为参数代入函数计算
在函数名后面的小括号内填写参数,多个参数之间使用逗号分隔
2)位置参数
行参与实参个数要保持一致,不然回报错
3)默认参数
实参和形参个数可以不一致,并且默认参数可以改变
4)可变参数
*args叫可变参数,可以传多个值,
args是元组类型数据
args 名字可变(是一个形参)
5)关键字参数
6)参数的解包
对列表,元组,集合解包时只需在变量名前加*
对字典解包时需在变量名前加**
python中一些高阶函数
map( )函数
map( )是python内置的一个高阶函数
map( )传入的第一个参数是一个函数,第二个参数是一个序列
匿名函数
优点:省去定义函数部分,使代码更加精简。避免考虑函数命名问题
函数的返回值
返回值:函数运算的结果,还需进一步操作时,给一个返回值
return用来返回函数执行结果的,如果没有返回值,默认为None
python可以间接返回多个值(返回了一个元组)
一旦遇到return,函数执行结束,后面的代码不会执行
函数的作用域
1)变量
局部变量:在函数内部定义的普通变量,只在函数内部作用,函数执行结束,变量会自动删除
全局变量:函数外部定义的变量
在函数内部可以用global关键字来修改全局变量
2)引用
可以根据内存地址来比较
函数装饰器
定义
装饰器:在不改变原函数的基础上,给函数增加功能,可以理解为把一个函数作为一个参数,返回一个替代版的函数
本质:返回函数的函数
1)对原有函数加以修改
对原有函数进行条件判断
2)语法糖:在被装饰的函数前加@装饰器名称
3)被装饰的函数有返回值的时候怎么办
被装饰的函数有返回值时,调用函数无返回值
在装饰器中先接收函数返回值,然后返回给装饰器。这样调用函数时就有返回值了
4)如何保留被装饰函数的函数名和帮助文档信息
当函数被装饰过后,函数名与帮助文档信息变为装饰器的内容
在装饰器前加上@functools.wraps(fun),可以保留被装饰函数的函数名和帮助文档信息。此方法需要导入functools模块
多个装饰器的顺序
当有多个装饰器时,从下到上调用装饰器
带参数的装饰器
此处的装饰器传了一个参数kind