python语法技巧小结

1.python值交换

a = 10
b = 100
c = 0

a,c,b = c,b,a

print a
print b
print c

2.lambda表达式

f = lambda x,y:x**y
print f(2,3)

其中x,y为参数,x**y为返回的结果。
lambdapython的匿名函数,在python coding中并不是必须的。但他可以简化代码,使得更美观。

3.yield

def yieldTest(arr):
    for i in arr:
        print i,
        msg = yield i
        print msg,              

def my_iter(arr):
    i = 1
    yt = yieldTest(arr)
    yt.next()
    while i < len(arr):
        yt.send(",")
        i+=1

arr = [1,3,5,7,9,11,13,15,17,19]

my_iter(arr)

yield简单说来就是一个生成器,生成器是这样一个函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。

生成器是一个函数——函数的所有参数都会保留

第二次调用此函数时——使用的参数是前一次保留下的.

生成器还“记住”了它在流控制构造生成器不仅“记住”了它数据状态。 生成器还“记住”了它在流控制构造(在命令式编程中,这种构造不只是数据值)中的位置。由于连续性使您在执行框架间任意跳转,而不总是返回到直接调用者的上下文(如同生成器那样),因此它仍是比较一般的。

4.wraper

def timeit(fn):

    import time

    def wrap(n):
        time.clock()
        fn(n)
        print "time used:" + str(time.clock())

    return wrap

@timeit
def fab(MAX):

    n, a, b= 0, 0, 1

    while n < MAX:
        print b
        a, b = b, a+b
        n+=1

fab(5)

参考链接:

http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html(lambda)
http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/?cmp=dwnpr&cpb=dw&ct=dwcon&cr=cn_51CTO_dl&ccy=cn(yield)
http://www.jb51.net/article/15717.htm(yield)
http://blog.jobbole.com/28506/(yield)
http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html(wraper)
http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html(wraper)

你可能感兴趣的:(python,swap,lambda,yield,wraper)