lambda函数
python中的lambda函数,是一类匿名函数,所谓匿名函数就是不用像普通的函数一样定义函数名,而是直接指定变量为函数:
a=lambda x:x*x
print(a(3))
完成的就是一个对变量x的平方,使用lambda函数主要是为了避免程序中的冗余,通常情况,lambda的表达式只能是单行的。格式如下:
lambda parameters:express
冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,也就是函数对象。
python的单例模式
单例模式就是在创建类时,一个类只创建一个实例,这样做是因为在一些情况,比如配置文件会被多次调用,但是希望调用的都是相同的配置,修改一个配置的时候在所有的调用者中都得到修改,因此就有了单例模式,来保证只有一个案例。
保证单例模式的方法很多,可以自定义_new函数,或者使用装饰器,具体的可以参考这篇文章。
python 的装饰器
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。
比如希望每一个函数在运行时都能够汇报运行的时间,这种操作和具体的函数没有关系,是一个共性的操作,就可以使用装饰器来对函数进行装饰。
具体的参考这个
这里写一个简单的定义装饰器的例子:
def debug(func):
def wrapper(*args, **kwargs): # 指定宇宙无敌参数
print "[DEBUG]: enter {}()".format(func.__name__)
print 'Prepare and say...',
return func(*args, **kwargs)
return wrapper # 返回
@debug
def say(something):
print "hello {}!".format(something)
可以看到定义了一个 debug函数,传入的是函数,返回的也是函数,而在wrapper中的命令则是每次调用函数时的执行的。