python 面试题

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中的命令则是每次调用函数时的执行的。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值