假期python复习4
函数
函数的定义和调用
def 函数名(形参):
函数体
return 返回值
站在形参的角度上:位置参数,*agrs,默认参数(陷阱),**kwargs
站在实参的角度上:按照位置传,按照关键字传
返回值:没有返回值 返回一个值 返回多个值
接收返回值:没有返回值不接受,返回一个值用一个变量接收,返回多个值用一个变量或对应数目的变量接收
闭包函数
在内部函数引用外部函数的变量
装饰器
装饰器一定是闭包函数
作用:在不改变原来函数的调用方式的情况下在这个函数的前后添加新的功能
完美的符合了一个开发原则:开放封闭原则
对扩展是开发的
对修改是封闭的
@wrapper使用装饰器---语法糖
完美的装饰器
from functools import wraps
@wraps(func)
取函数名的时候使用
带参数的装饰器
@wrapper --》@wrapper(argument)
三层嵌套函数
多个装饰器装饰一个函数
@wrapper1
@wrapper2
def func():
pass
这里就是先运行wrapper1在运行wrapper2
迭代器
dir加类型可以打印出该数据类型所有可以使用的方法
双下划线的方法叫做双下方法-------写好的c语言方法
print([1].__add__([2]))
print([1] + [2])
如果这个方法,一般情况下双下方法不被调用
set将列表变集合
int不可迭代
可以用‘’iter‘’ in dir(int)判断
只要是能被for循环的数据类型就一定拥有____iter____方法
iterator迭代器
一个列表执行了____iter____()之后的返回值就是一个迭代器
可以指定从指定位置开始取 取值 计算迭代器内元素个数
只要含有____iter____方法的都是可迭代的-------可迭代协议
for循环时会检测是否可迭代的
迭代器协议:内部含有____next____和____iter____方法的就是迭代器
from collections import Iterable 判断是否可迭代
from collections import Iterator 判断迭代器
迭代器协议和可迭代协议
可以被FOR循环的都是可迭代的
可迭代的内部都有____iter____方法
迭代器一定可迭代:因为里面有____iter____方法含____iter____方法就可迭代
通过____next____方法就可以从迭代器中一个一个的取值
可迭代的。iter()方法就可以得到一个迭代器
当我们遇到一个新的变量,不确定能不能for循环的时候,就判断他是否可迭代
for循环的执行:内部会调用____iter____方法 然后每个值都是从产生的迭代器中取得,直到取完报错
迭代器的好处:
1、从容器类型中一个一个的取值,会把所以的值都取到
2、节省内存空间 range 和 f(文件句柄)