函数
2019-08-21 13:38:13 0 举报
AI智能生成
python知识点:函数与内置函数
作者其他创作
大纲/内容
命名空间、作用域等
名称空间
命名空间:当程序执行时,将变量与值的对应关系存放的空间
局部命名空间:当函数执行时,将函数变量与值的对应关系存放在一个空间中,这个空间会随函数调用结束而消失
内置命名空间:Python自带的,如内置函数等等
作用域
全局作用域:
内置命名空间
全局命名空间
局部作用域:
临时命名空间
globals()函数查看全局作用域中的内容
locals()函数查看局部作用域中的变量和函数信息
locals()函数查看局部作用域中的变量和函数信息
空间加载顺序
内置->全局->局部
空间取值顺序
局部->全局->内置
就近原则 LEGB原则
global
1.在函数中声明一个全局变量
2.在函数中修改一个全局变量
nonlocal
在函数中对父级(或者更高级)的变量进行修改,但不能修改全局变量
函数名的应用
1.可作为变量
2. 可作为容器类的元素
3.可作为函数的参数
4.可作为函数的返回值
函数的嵌套
只要遇到()就是函数的调用,没有()就不是
闭包:
定义:内层函数对外层函数变量的引用
好处:
1.让一个局部变量常驻内存
2.防止其他程序改变这个变量(当变量写在全局时,可用global修改)
迭代器
定义:内部含有__iter__,并含有__next__的方法
可迭代对象只有__iter__方法,没有__next__
str,list,tuple,set,dict,range,f(句柄)
其中,还有f同时也是迭代器
其中,还有f同时也是迭代器
迭代器-->可迭代对象:iter(可迭代对象)
迭代器的取值
__next__
for 循环
必须掌握:使用while循环+迭代器来模拟for循环
作用:
1.节省内存
2.惰性机制
3.一条路走到黑,不走回头路
生成器
自己用Python代码写成的迭代器
生成器函数
函数中有yield就是生成器函数
.__next__()和.send(内容)都是让生成器走向下一次
send 可以给上一个yield的位置传递值
send 可以给上一个yield的位置传递值
与迭代器区别
return 直接返回结果并结束函数的调用
yield 返回结果,可以让函数分段执行
生成器表达式
1.循环模式
(结果 for 变量 in 可迭代对象)
2.筛选模式
(结果 for 变量 in 可迭代对象 if 条件)
推导式
列表推导式
字典推导式
集合推导式
内置函数
函数的定义:对代码块和功能的封装和定义(以功能为导向)
封装一个功能
节省代码,减少重复率
提高代码可读性
函数的返回值:
1.结束函数
2.将函数的返回值返回给函数的调用者(即:函数名())
没有return 返回None
只有return 返回None
return 单个值 返回单个值
return 1,2,'str' 返回(1,2,'str')
函数的传参
形参角度
1.位置参数
2.默认值参数:一定在位置参数后面
3.动态参数:*args,**kwargs
当函数定义的时候:*,**代表聚合,*将实参对应的所有位置参数聚合成一个元祖,复制给args
**将实参对应的所有关键字参数聚合成一个字典
**将实参对应的所有关键字参数聚合成一个字典
当函数调用的时候:*,**代表打散,*将iterable元素打散成实参的位置参数
**将字典所有的键值对打散成实参的关键字参数
**将字典所有的键值对打散成实参的关键字参数
形参的顺序:位置参数>*args>默认值参数>**kwargs
实参角度
1.位置参数
2.关键字参数
3.混合参数:关键字参数必须在位置参数后面
0 条评论
下一页