今天初步学习了一下python 的生成器,之前一直不明白怎么用,今天基本上搞明白了最基本的。
#!/usr/bin/python
def a(fn):
print ‘a‘
# def d(st):
# print st+‘d‘
return fn
return d
def b(fn):
print ‘b‘
return fn
def e(fn):
print ‘e‘
def f(bn):
print bn+‘e2‘
return f
@e
@a
@b
def c(st):
print ‘==‘
c(‘*‘)
运行一下输出:
b
a
e
*e2
下面来分析一下:
首先执行 c(‘*) ,在执行时先往上执行@b 实际上是执行b(c) , 返回c, 然后执行@a,实际上是a(c),返回c,再执行@e,实际上是e(c),返回的是f函数,加上f(‘*‘) 。得到结果。
综上其实是这样执行的 (e (a (b(c))) (‘*‘)===》 f() (‘*‘) ==> f(‘x‘) 当然再逐级过程中有打印输出(e (a (b(c))) 会一次打印出相应的值。
本文出自 “庞飞” 博客,请务必保留此出处http://pangfei.blog.51cto.com/8832397/1699590
原文地址:http://pangfei.blog.51cto.com/8832397/1699590