回顾:
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 num
num="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.闭包的优点
提高代码的复用性
对数据进行存储和封装,提高数据安全性