Python基础2 之3
2017-05-01 22:39 crow! 阅读(211) 评论(0) 编辑 收藏 举报1、装饰器
def auth(a): print(a) def auth(func): def wrapper(*args, **kwargs): print("hello world {0} ,{1}".format(*args, kwargs)) return func(*args, **kwargs) return wrapper return auth @auth("local") def dar(par1): print("dar %s"%par1) return "hello dar" print(dar("liaowei")) 运行结果: local hello world liaowei ,{} dar liaowei hello dar
2、迭代器
迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
特点:
- 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
- 不能随机访问集合中的某个值 ,只能从头到尾依次访问
- 访问到一半时不能往回退
- 便于循环比较大的数据集合,节省内存
>>> a = iter([1,2,3,4,5]) >>> a <list_iterator object at 0x102113588> >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a = (i*2 for i in range(10)) >>> a.__next__() 0 >>> a.__next__() 2 >>> a.__next__() 4 >>> a.__next__() 6 >>> a.__next__() 8 >>> a.__next__() 10 >>> a.__next__() 12 >>> a.__next__() 14 >>> a.__next__() 16
3、生成器generator
定义:一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如果函数中包含yield语法,那这个函数就会变成生成器
def testyeild (hehe) : for i in range(10): yield i*hehe a = testyeild(4) print(a.__next__()) print(a.__next__()) print(a.__next__()) print(a.__next__()) 运行结果 0 4 8 12