【Todo】Python面试题分析记录(修饰器等)
首先,看这一段代码:
class A(object): x = 1 gen = (lambda t: (t for _ in xrange(10)))(x) if __name__ == '__main__': print(list(A.gen))
打印出:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
装饰器学习:
看这篇文章应该就可以了:《Python装饰器学习(九步入门)》
里面提到
http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html
内置的装饰器有三个,分别是staticmethod、classmethod和property,作用分别是把类中定义的实例方法变成静态方法、类方法和类属性。由于模块里可以定义函数,所以静态方法和类方法的用处并不是太多,除非你想要完全的面向对象编程。而属性也不是不可或缺的,Java没有属性也一样活得很滋润。从我个人的Python经验来看,我没有使用过property,使用staticmethod和classmethod的频率也非常低。
重点关注第11行的@timeit,在定义上加上这一行与另外写foo = timeit(foo)完全等价,千万不要以为@有另外的魔力。除了字符输入少了一些,还有一个额外的好处:这样看上去更有装饰器的感觉。
class Rabbit(object): def __init__(self, name): self._name = name @staticmethod def newRabbit(name): return Rabbit(name) @classmethod def newRabbit2(cls): return Rabbit('') @property def name(self): return self._name
这里定义的属性是一个只读属性,如果需要可写,则需要再定义一个setter: @name.setter def name(self, name): self._name = name
http://blog.csdn.net/mdl13412/article/details/22608283
里面给出了一些实例参考
本文主要讲解原理性的东西,具体的实例可以参考下面的链接:
Python装饰器实例:调用参数合法性验证
对于类方法的装饰器,有人给出如下方案:
def decorator(args): def _deco(func): def _func(self): print args print 'gooooo' func(self) print 'fooo' return _func return _deco
关于直接对类编写装饰器,如下:
http://www.2cto.com/kf/201603/494405.html
中文编码
可以看这里:http://www.cnblogs.com/charlesblc/p/6159109.html
其他的后续再看吧...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!