首页 存档 技术 查看内容

听说你会 Python ?

2018-3-30 13:00 |来自: 互联网 277 0

摘要: 来源:Manjusaka 链接:manjusaka.itscoder.com/2016/11/18/Someone-tell-me-that-you-think-Python-is-**/(点击尾部阅读原文前往) 已获转载授权 前言 最近觉得 Python 太“简单了”,于是在**川爷面前放 ...

来源:Manjusaka

链接:manjusaka.itscoder.com/2016/11/18/Someone-tell-me-that-you-think-Python-is-simple/(点击尾部阅读原文前往)

已获转载授权


前言


最近觉得 Python 太“简单了”,于是在师父川爷面前放肆了一把:“我觉得 Python 是世界上最简单的语言!”。于是川爷嘴角闪过了一丝轻蔑的微笑(内心 OS:Naive!,作为一个 Python 开发者,我必须要给你一点人生经验,不然你不知道天高地厚!)于是川爷给我了一份满分 100 分的题,然后这篇文章就是记录下做这套题所踩过的坑。


1.列表生成器


描述


下面的代码会报错,为什么?


classA(object):

x=1

gen=(xfor_inxrange(10))# gen=(x for _ in range(10))

if__name__=="__main__":

print(list(A.gen))


答案


这个问题是变量作用域问题,在 gen=(x for _ in xrange(10)) 中 gen 是一个 generator ,在 generator 中变量有自己的一套作用域,与其余作用域空间相互隔离。因此,将会出现这样的 NameError: name 'x' is not defined 的问题,那么解决方案是什么呢?答案是:用 lambda 。


classA(object):

x=1

gen=(lambdax:(xfor_inxrange(10)))(x)# gen=(x for _ in range(10))

if__name__=="__main__":

print(list(A.gen))


2.装饰器


描述


我想写一个类装饰器用来度量函数/方法运行时间


importtime

classTimeit(object):

def__init__(self,func):

self._wrapped=func

def__call__(self,*args,**kws):

start_time=time.time()

result=self._wrapped(*args,**kws 声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除


路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部