python学习笔记四 迭代器,生成器,装饰器(基础篇)

迭代器

  __iter__方法返回一个迭代器,它是具有__next__方法的对象。在调用__next__方法时,迭代器会返回它的下一个值,若__next__方法调用迭代器

没有值返回,就会引发一个StopIteration异常。
 
 特点:
  1. 访问者不需要关心迭代器内部的结构,仅需通过__next__方法不断去取下一个内容
  2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问
  3. 访问到一半时不能往回退
  4. 便于循环比较大的数据集合,节省内存
name = iter(['koka','lolo','lala'])
print(name.__next__())
print(name.__next__())
print(name.__next__())
更多迭代器内容:https://segmentfault.com/a/1190000005915893
 
生成器:
 
    定义:一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),任何包含yied语句的函数称为生成器。生成器是由两部分组成:
生成器的函数和生成器的迭代器。生成器的函数是def语句定义的,包含yield的部分,生成器的迭代器是这个函数返回的部分。
案例一:
def cash_out(amount):
print("欢迎登录ATM")
while amount >0:
amount -= 1
yield 1 #yield返回一个指定的数
print("欢迎来取钱!") ATM = cash_out(5)
print("取到钱 %s 万" % ATM.__next__())
print("花掉花掉!")
print("取到钱 %s 万" % ATM.__next__())
print("取到钱 %s 万" % ATM.__next__())
print("花掉花掉!")
print("取到钱 %s 万" % ATM.__next__())
print("取到钱 %s 万" % ATM.__next__())
print("取到钱 %s 万" % ATM.__next__()) #到这时钱就取没了,再取就报错了 Traceback (most recent call last):
File "D:/home/new.py", line 42, in <module>
print("取到钱 %s 万" % ATM.__next__()) #到这时钱就取没了,再取就报错了
StopIteration

#使用yied语句,函数就会被冻结:即函数停在那点等待被激活。函数被激活后就从停止的那点开始执行。

案例二:
#创建一个嵌套列表的函数,能够顺序打印列表中的数字
li = [[1,2,],[3,4],[5]]
def flatten(li):
for sublist in li:
for item in sublist:
yield item #返回子序列中元素的迭代器
for j in flatten(li):
print(j)
1
2
3
4
5
生成器方法
生成器的属于表现为生成器和"外部世界"进行沟通交流的渠道注意如下两点:
  1. 外部作用域访问生成器的send方法,就像访问__next__方法,send需要一个参数。
  2. 在内部则挂起生成器,yield作为一个表达式而不是语句,即:当生成器重新运行的时候,yield方法返回值是接受到外部通过send方法发送的值。如果__next__方法被使用yield方法返回None。
#使用yield实现在单线程的情况下实现并发运算的效果

import time
def consumer(name):
print("%s 准备吃包子!"%name)
while True:
baozi = yield
print("包子[%s]来了,被[%s]吃了!" %(baozi,name) def producer(name):
c = consumer('A')
d = consumer('B')
c.__next__()
d.__next__()
print("开始生产包子!")
for i in range(5):
time.sleep(1)
print("做了2个包子!")
c.send(i)
d.send(i)
producer('koka')

更多内容:http://python.jobbole.com/81911/

装饰器:

装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数。装饰器的作用就是为已经存在的对象添加额外的功能,使用装饰器可以在不改变程序源码的前提下,扩展程序功能。

必备知识:

def foo():
print 'foo' foo #表示是函数
foo() #表示执行foo函数 def foo():
print 'foo'
foo = lambda x: x +
foo() # 执行下面的lambda表达式,而不再是原来的foo函数,因为函数 foo 被重新定义了

普通装饰器

def w1(func):
def inner(*args,**kwargs):
print("通过验证!!!")
return func(*args,**kwargs)
return inner @w1
def f1(arg):
print("欢迎%s来到TV页面" %arg)
f1('abc')

调用过程:

  • 程序从上往下运行,加载w1函数(函数未被执行、未被执行、未被执行);
  • 遇见@w1@函数名 是python的一种语法糖。),执行w1函数,将f1函数传入到w1函数(将 @w1 下面的 函数 作为w1函数的参数,);
  • 将执行完的w1函数的返回值赋值给f1, @w1 <=> f1=w1(f1) 此时的f1实际是inner函数;
  • 调用重新赋值的f1(arg)时,即运行w1函数内部的inner(arg)函数。

详细过程如下:

当写完这段代码后(函数未被执行、未被执行、未被执行),python解释器就会从上到下解释代码,步骤如下:

  1.def w1(func):  ==>将w1函数加载到内存

  2.@w1

没错,从表面上看解释器仅仅会解释这两句代码,因为函数在没有被调用之前其内部代码不会被执行。

从表面上看解释器着实会执行这两句,但是 @w1 这一句代码里却有大文章,@函数名 是python的一种语法糖。

如上例@w1内部会执行一下操作:

  • 执行w1函数,并将 @w1 下面的 函数 作为w1函数的参数,即:@w1 等价于 w1(f1)所以,内部就会去执行:
        def inner(arg):
            #验证
            return f1(arg)   # func是参数,此时 func 等于 f1
        return inner     # 返回的 inner,inner代表的是函数,非执行函数
    其实就是将原来的 f1 函数塞进另外一个函数中
  • 将执行完的 w1 函数返回值赋值给@w1下面的函数的函数名w1函数的返回值是:
       def inner(arg):
            #验证
            return 原来f1(arg)  # 此处的 f1 表示原来的f1函数
    然后,将此返回值再重新赋值给 f1,即:
    新f1 = def inner(arg):
                #验证
                return 原来f1(arg) 
    所以,以后业务部门想要执行 f1 函数时,就会执行 新f1 函数,在 新f1 函数内部先执行验证,再执行原来的f1函数,然后将 原来f1 函数的返回值 返回给了业务调用者。
    如此一来, 即执行了验证的功能,又执行了原来f1函数的内容,并将原f1函数返回值 返回给业务调用者。

带参数的装饰器

#!/usr/bin/env python
#coding:utf-8
def Before(request,kargs):
print('before') def After(request,kargs):
print('after') def Filter(before_func,after_func):
def outer(main_func):
def wrapper(request,kargs):
Before      
main_result = main_func(request,kargs)
After
return main_result
return wrapper
return outer @Filter(Before, After)
def Index(request,kargs):
print('index') if __name__ == '__main__':
Index(,)

调用过程:

  • 程序从上往下运行,加载Before,After,Filter函数(函数未被执行、未被执行、未被执行);
  • 遇见@filter(Before,After)@函数名 是python的一种语法糖。),这里会忽略@符号,执行Filter函数,程序从上往下运行,加载outer函数(函数未被执行),将Filter函数的函数值返回给outer;此时表达式 @Filter(Before,After) => @outer 变成了我们熟悉的普通装饰器,
  • 执行outer函数将Index函数传入到outer函数,将执行完的outer函数的返回值赋值给Index, @outer<=> index=outer(index) 此时的index实际是wrapper函数;
  • 调用重新赋值的index(1,2)时,即运行outer函数内部的wrapper(request,kargs)函数。

aaarticlea/png;base64,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" alt="" width="733" height="642" />

函数不仅可以使用自身的参数,还可以使用装饰器传入的参数。

更多装饰器内容:http://python.jobbole.com/85056/

递归: 

递归即在函数或过程中调用自身;
 
递归包含如下两个部分:
  • 当函数直接返回值时,有基本实例(最小可能性问题)
  • 递归实例,包括一个或者多个问题最小部分的递归调用

这里的关键就是将问题分解为小部分,递归不能永远继续下去,因为它总是以最小可能性问题结束,而这些问题又存储在基本实例中。

递归算法所体现的“重复”一般有三个要求:
  • 每次调用在规模上都有所缩小(通常是减半);
  • 相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
  • 在问题的可能性极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。
阶乘:

    * 1的阶乘是1;
* 大于1的数n的阶乘是n乘n-1的阶乘 def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1) 阶幂: * 对于任何数字x来说,power(x,0)是1;
* 对于任何大于0的数来说,power(x,n)是x乘以(x,n-1)的结果。 def power(x,n):
if x == 0:
return 1
else:
return x * power(x,n-1)

查看递归过程:

def cacl(n):
print(n)
if n/2 > 1:
res = cacl(n/2)
print("res:",res)
print("N:",n)
return n
cacl(18) 18
9.0
4.5
2.25
1.125
N: 1.125
res: 1.125
N: 2.25
res: 2.25
N: 4.5
res: 4.5
N: 9.0
res: 9.0
N: 18

递归返回值

def n4():
return "HAHA"
def n3():
n4()
def n2():
n3()
def n1():
n2() result = n1()
print result

返回值将是None,执行result = n1(),调用n1函数,n1调用了n2,n1返回None,n2调用n3,n2返回None,n3调用n4,n3返回None  n4返回'HAHA',即使n2-n3中有return n3,return n4 返回值依然是None,因为n1执行的时候返回None.

二元查找:

def search(data,find_num):
mid = int( len(data) / 2)
mid_value = data[mid]
if len(data) == 1 and data[0] == find_num: #当列表中只有一个数时,判断该数是否存在。 print("find %s" %find_num)
elif len(data) >1:
if mid_value > find_num:
return search(data[:mid],find_num)
elif mid_value < find_num:
return search(data[mid:],find_num)
else:
print("find %s" %data[mid])
else:
print("cannot find [%s] in data_list" %find_num)
if __name__ == "__main__":
data = list(range(100))
search(data,0)

算法:

案例一:
li = [23,52,12,4,7,18,33,99,25]
for i in range(1,len(li)): #循环数组中1到len(li) 1,2,3,4,5...
for j in range(len(li)-i):#循环数组中len(li)-i到1 ..5,4,3,2,1 每次循环会把最大的值放在最后,然后减少一次循环
a = li[j] #列表中第1个值
b = li[j+1] #列表中第2个值
if a > b:
temp = li[j] #大的值赋给temp
li[j] = li[j+1] #小的值赋给大的值
li[j+1] = temp #从temp取出大赋给小的值
print(li) #同上
案例二:
li2 = [23,52,12,4,7,18,33,99,25]
for i in range(len(li2)-1):
for j in range(i+1,len(li2)):
a = li2[i]
b = li2[j]
if a > b:
temp = li2[j]
li2[j] = li2[i]
li2[i] = temp
print(li2)

二维数组转换

转换过程如下图:

python学习笔记四 迭代器,生成器,装饰器(基础篇)

data = [[i for i in range(4)] for row in range(4)]  #列表推导式创建数据。
for r_index,row in enumerate(data): #循环行标0,1,2,3 和 data
for c_index in range(r_index,len(row)):# 0-4,1-4,2-4
tmp = data[c_index][r_index]
data[c_index][r_index] = data[r_index][c_index]
data[r_index][c_index] = tmp
print('---------------')
for i in data:print(i) “”“
data[0][0] = data[0][0] data[1][0] = data[0][1] data[2][0] = data[0][2] data[3][0] = data[0][3]
data[1][1] = data[1][1] data[2][1] = data[1][2] data[3][1] = data[1][3]
data[2][2] = data[2][2] data[3][2] = data[2][3]
data[3][3] = data[3][3]
”“” 结果如下:
[0, 0, 0, 0]
[1, 1, 1, 1]
[2, 2, 2, 2]
[3, 3, 3, 3]
上一篇:Python学习笔记四--字典与集合


下一篇:【大数据系列】HDFS安全模式