回顾:
1. Python的函数的概述函数定义函数调用2. Python函数中参数的类型和返回值形参和实参形参类型:普通参数: 实参的传递的顺序和个数和形参一直关键字参数: 指定传递的实参被特定形参接收默认参数: 形参中设定当前参数的默认值可以不传递设定了默认参数的实参不定长参数:一个形参能够接收任意多个实参*args:普通普通收集参数的**kwargs:关键字收集参数实参类型:传递方式普通实参关键字实参返回值:return关键字返回数据结果结束当前函数return返回多个结果数据,数据类型tuple过程式函数和非过程式函数
3. 函数文档的使用
1.使用help()方法来查看某一个函数的说明和帮助文档
2. 函数名称.__doc__: 返回说明文档自定义函数文档:格式:在定义函数后用'''三引号加上注释(def 下一行) 优点:方便与后期的维护提高代码的可读性
4.参数的传递
实际参数: 数据对象对象的类型:可变对象: list dict不可变对象: number, tuple, string参数的传递:可变的对象:地址传递不可变对象:值传递
5.变量的作用域
全局变量:在内置哈数中,可以调用在内置函数中,不可修改
局部变量:在内置函数中,可以调用在函数外调用,使用global修饰后,即可访问
作业解答
回顾
1.变量定义的语法
2.标识符命名规则
3.数据类型
4.常见的运算符
5.分支结构
6.循环结构
7.函数效率: 总结 + 计划
今日概要
1.python中变量的作用域
2.python中函数的递归
3.python的闭包
一、python中变量的作用域
1.global关键字将局部变量的作用域提升全局变量1.变量的有效范围向函数内部传递2.如果其他函数内部没有使用global,当前函数可以访问外部的全局变量,不能修改3.在单签的函数内部使用global修饰外部变量,在当前哈数 中可以修改4.其他的哈数对于使用global修饰外部变量的函数来说,没有提升的效果2.nonlocal 关键字在内置函数(嵌套的函数中)使用1.在局保护函数中的局部使用2.将当前哈数中的变量的作用域提升到上一层,仅仅提升一层,在此层中必要得声明3.允许和global一起使用
综合案例
def one():def two():num="11" def three():nonlocal numnum="22" def four():global num num="33" num="00" two()print(num) three()print(num) four()print(num)
one()
print(num)
二、函数的递归
1.概念在哈数的哈数体中调用该函数本省(自己调用自己)2.案例求阶乘求fib数列
3.注意事项1.查找递归的规则,设置退出递归的条件2.使用递归可能影响程序的执行性能(贼费性能)3.使问题简单化(尽量不要使用)
4.练习1.使用递归求阶乘2.(扩展)求Fib数列第n为的值?
三、python中闭包
1.概念在一个外部函数中定义一个内部函数,函数的嵌套内部函数使用了外部函数的变量,并且外部函数的返回值是内部函数的引用外函数传递给内函数的数据,不会随着外部函数执行完就没了,就好像绑定在了内部函数中似的
2.修改内函数中的数据需要使用nonlocal进行修饰
3.闭包的优点提高代码的复用性对数据进行存储和封装,提高数据安全性