02 Function
2019-06-21 22:33:58 0 举报
AI智能生成
Python Function
作者其他创作
大纲/内容
Function
函数结构
def 函数名: 函数体
函数参数
形参
位置参数:按顺序一一对应
默认参数:传至便覆盖
当函数定义时:*, **代表聚合,*将实参所对应的所有位置参数聚合到一个元组,赋值给args**将实参对应所有的关键字参数聚合到一个字典中,赋值给kwargs
当函数调用时:*,** 代表打散。*是将所有的iterable元素打散成实参的位置参数**是将字典的所有的键值对打散成关键字参数
形参的顺序:位置参数, *args,默认参数, **kwargs
实参
关键字参数:name = ‘panky’ 一一对应
混合参数:位置参数和关键字参数的混合关键字参数必须放在位置参数之后
global, nonlocal
global
在函数内部,对全局作用域的变量进行修改
在函数内部,声明一个全局变量
nonlocal
下级函数对上级函数非全局变量进行修改
迭代器
1,可迭代对象:内部含有__iter__方法
2,迭代器:内部含有__iter__和__next__方法
3,可迭代对象(不能直接取值)--》迭代器:iter(可迭代对象)
4,迭代器取值
__next__
for 循环
close()
闭包
内层函数对外层函数非全局变量的引用,并将内层函数名返回
机制:python解释器遇到闭包,那么这个空间不会随着函数的结束而释放
应用
装饰器
爬虫
内置函数
函数定义
封装一个功能
节省代码,减少重复率
提高代码可读性
函数返回值
1,结束函数
2,给函数调用者返回值
只有return None
return 单个值:返回单个值,不改变数据类型
return多个值: 以元祖的形式返回
3,没有return:默认返回None
内存,空间
全局作用域
全局名称空间
存储当前py文件:变量与值的对应关系
内置名称空间
built-in, 模块
局部作用域
局部名称空间
当函数执行时,内存临时开辟一个空间存储函数内部变量与值的对应关系,随着函数的结束而消失
加载顺序
内置名称空间---》程序运行时:全局名称空间---》函数调用时:局部名称空间
取值顺序
就近原则 LEGB
局部名称空间--》全局名称空间--》内置名称空间
函数名的应用
1,函数名即函数地址
2,函数名可以作为变量
3,函数名可以作为函数的参数
4,函数名可以作为函数的返回值
5,函数名可以作为容器类类型的元素
生成器
1,通过python代码写的迭代器,本质就是迭代器
形成方式
通过yield生成
send(), next()
yield from
生成器推导式
循环模式
(变量(加工后的变量) for i in iterable)
筛选模式
(变量(加工后的变量) for i in iterable if 条件)
装饰器的本质是闭包,而且装饰器其实就是个函数而已。
在不改变原函数调用方式上,给原函数增加了一些额外的功能。登录验证,写日志,执行效率等等
开放封闭原则
对拓展是开放的
对修改是封闭的
标准装饰器
0 条评论
回复 删除
下一页