函数的作用:
1.减少重复代码(反复的调用)
2.方便修改,更易扩展(传参)
3.保持代码的一致性
1.函数的执行

注:函数只有在调用的时候才会执行里面的东西,所以在从上至下执行代码时跳过了这个函数体,碰到show()时才会执行函数体的内容
注:show()才是调用,而show是一个函数变量
2.参数

形参与实参的顺序一致
形参与实参的个数一致,多了与少了都会报错
3.作用域

解析:调用f()时执行def f()函数至print(a)跳过def inner()函数体,执行inner()调用才开始def inner()里的代码,在inner函数内,打印a时,开始从自己往外找是否有a,有,则打印自己的,若没有,就去找嵌套变量……,总而言之:1.调用时才执行函数体内的代码,2.找寻变量时从自己开始往外找
4.高阶函数
1. 函数名可以作为参数输入
2. 函数名还可以作为返回值
满足其一则是高阶函数
5.闭包

6.装饰器




装饰器重头戏

作用域(存储),闭包(有内部函数,调用外部环境变量f),高阶函数(有返回值inner)

网友评论