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为返回的结果。
lambda,python的匿名函数,在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简单说来就是一个生成器,生成器是这样一个函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。
生成器是一个函数——函数的所有参数都会保留
第二次调用此函数时——使用的参数是前一次保留下的.
生成器还“记住”了它在流控制构造生成器不仅“记住”了它数据状态。 生成器还“记住”了它在流控制构造(在命令式编程中,这种构造不只是数据值)中的位置。由于连续性使您在执行框架间任意跳转,而不总是返回到直接调用者的上下文(如同生成器那样),因此它仍是比较一般的。
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)