装饰器:python
定义:ide
本质是函数,(装饰其余函数)就是为其余函数添加附加功能
原则:
1.不能修改被装饰的函数的源代码
2.不能修改被装饰的函数的调用方式函数
优势:
装饰器带来的最直观的好处:减小对函数的细化修改,批量增长新功能。ui
实现装饰器必备知识:
一、函数即“变量”编码
函数的原理与变量引用类似,都是将一个命名于内存对象进行映射
二、高阶函数
知足下列两个条件之一的则为高阶函数:
a、把一个函数名看成实参传递给另外一个函数(在不修改被装饰函数代码的状况下为它增长功能)
b、一个函数返回值中包含另外一个函数名(不修改函数的调用方式)
三、嵌套函数
具备局部变量的特性,即在函数内部继续使用def定义新的子函数;
四、高阶函数 + 嵌套函数 => 装饰器spa
最简单的装饰器示例:debug
1 def auth(_func): 2 def decorate(*args, **kwargs): 3 <须要附加的功能> 4 result = _func(*args, **kwargs) 5 <须要附加的功能> 6 return result 7 8 return decorate
Python的内存回收机制:
一、当内存对象没有变量引用时候,会在一段时间内将内存对象回收
二、取消变量引用可使用del关键词,其实是实现了变量名与内存对象之间的映射关系3d
生成器(generator):
eg.( i**2 for i in range(10) )返回结果为一个生成器
一、只有在调用的时候才会生成相应的数据
二、只能记录当前的位置及数据,并且只能向后,不能向前
三、获取下一个数据的方法是调用:__next__()方法
迭代器 VS 可迭代对象(Iterator VS Iterable)
一、迭代器是指能够调用next()方法的对象
二、迭代对象是指可使用for ... in ...: 遍历的对象
三、迭代对象能够经过iter()方法转换为迭代器
四、迭代器必定是迭代对象
五、但迭代对象不必定是迭代器,能够经过iter()转换代理
匿名函数的使用:code
匿名函数,又称为:lambda 函数。这段代码显示如何使用 lambda 函数:
f = lambda x : 2 * x print f(3)
一个返回语句是未使用过 lambda 函数,它老是返回一些东西。 lambda 函数能够包含 if 语句:
f = lambda x: x > 10 print(f(2)) print(f(12))
映射的定义是 map(函数,可迭代)。它适用于一个函数可重复每个项目。咱们能够用 map(),以与列表中的lambda函数:
list = [1,2,3,4,5] squaredList = map(lambda x: x*x, list) print(squaredList)
使用 lambda 函数任何地方,均可以使用正常的函数来代替。lambda 函数不是一个语句,它是一个表达式。lambda 函数不支持的语句块。
过滤器(函数,迭代器)建立一个新的列表的元素,函数返回True。示例:
list = [1,2,3,4,5,6,7,8,9,10] newList = filter(lambda x: x % 2 == 0, list) print(newList)
返回的列表将返回仅包含其中lambda表达式的元素 “lamba x: x % 2 == 0” 的值为:true.
reduce 函数, reduce(function, iterable) 适用于两个参数累积到可迭代的项目,由左到右。示例:
list = [1,2,3,4,5] s = reduce(lambda x,y: x+y, list) print(s)
在这种状况下,表达始终为:true,所以,它简单地归纳了列表的元素。另外一个例子:
list = [10,6,7,5,2,1,8,5] s = reduce(lambda x,y: x if (x > y) else y, list) print(s)
内置函数:
一、abs:返回绝对值
二、all: 遍历一个迭代器,若是都为空,或者每一个迭代元素都会true,则返回ture,等价于:
def all(iterable): for element in iterable: if not element: return False return True
三、any:与all函数做用相反,若是任何迭代的一个元素为ture,或者为空,则返回false
四、ascii: 转成ascii码
五、bin:转一个整数获得一个二进制的字符串
六、bool:转换一个值,获得一个bool类型
七、bytearray:返回一个字节数据
八、bytes: 根据一个编码转换成字节形式
九、callable: 回调函数,若是返回false,则表明回调失败,若是为true,它也仍然可能失败
十、chr:返回一个整形数字的Unicode形式,好比97返回a
十一、classmethod:为函数返回一个类方法
十二、compile:编译一个资源进入一个代码里或一个AST对象
1三、complex:建立一个复数的表达式
1四、 delattr:移除一个对象的属性
1五、dict:建立一个词典结构(相似Map)
1六、dir:若是没有参数返回本文件的路径,若是有参数返回一个对象的属性列表
1七、divmod:两个整形数字作相除
1八、enumerate:返回一个枚举对象
1九、eval:执行一个表达式,或字符串做为运算
20、exec:支持python代码的动态执行
2一、filter:在一个元组里面过滤出目标字符串
2二、float:字符串转成浮点类型
2三、format:格式化字符串
2四、frozenset:返回一个新的克隆对象
2五、getattr:获取对象的一个方法的结果,相似于x.foobar
2六、 globals: 返回当前全局的字典表
2七、hasattr:判断是否有某个属性值,返回true表明有
2八、hash:取一个对象的hash值
2九、help:调用系统内置的帮助系统
30、hex:转换一个整形数字,为小写的十六进制
3一、id: 返回一个对象的惟一标识值
3二、input:从控制台读取数据
3三、int,转换字符串为int型
3四、isinstance:判断一个对象是否为该类的一个实例
3五、issubclass:判断一个类是否为另外一个类的子类
3六、iter: 返回一个可迭代的对象
3七、len: 返回一个字符串的长度
3八、list:打印一个集合对象
3九、locals:更细并返回一个词典的本地标志表
40、map:返回一个可迭代的map函数
4一、max:返回集合里面最大的一个或多个值
4二、memoryview:返回一个python对象的内部数据
4三、min:返回集合里面最小的一个或多个值
4四、next:返回集合里面的下一项数值
4五、object:返回一个新的对象,是全部的类的父类
4六、oct:返回一个整形为八进制类型
4七、open: 打开一个系统文件
4八、ord:获得一个字符串或unicode类型的ascii数值
4九、pow:返回的数字n次方值
50、print:打印输出语句
5一、property:返回一个属性值
5一、range:产生一个数字序列
5二、repr:返回一个字符串可打印对象
5三、reversed:反转一个集合
5四、round:返回一个四舍五入的浮点数
5五、set:返回一个新的set对象
5六、setattr:设置一个新的属性值
5七、slice:返回一个集合的区间集合
5八、sorted:对一个集合进行排序
5九、staticmethod:声明返回一个静态方法
60、str:将数字类型转换为字符串
6一、sum:对一个集合里面的值求和
6二、super:返回一个代理父类的对象
6三、tuple:返回一个不可变的元组
6四、type:返回一个对象的类型
6五、vars:返回对象的属性
6六、zip:返回组合一个对等的项
6七、__import__: 比import高级的导入方法
python里面的内置常量 :
一、False:bool类型的值
二、True:bool类型的值
三、None:对象的为null
四、NotImplemented: 不是其余类型的实现
五、Ellipsis:省略
六、__debug__:debug选项
七、quit,exit,copyright,license,credits
其余小知识点:
一、获取绝对路径:
os.path.abspath()
二、获取上级目录
os.path.dirname()
三、获取函数名:
func.__name__
或者
getattr(func,__name__)