Python函数式编程---- Pythonic 之路

lambda 

lambda是匿名函数,没有函数名,你可以现场定义、直接使用:

 >>> a=map(lambda x:x*2,[1,2,3])
>>> list(a)
[2, 4, 6]

lambda x:x*2 表示将x=x*2 ,对于偶尔一用的函数,就可以这样写


map

map函数是对一个序列的每个项依次执行函数,下面是对一个序列每个项都乘以2

a=map(lambda x:x*2,[1,2,3])


reduce

reduce函数是对一个序列的每个项迭代调用函

reduce(lambda  x,y:x*y,range(1,4)) 这个例子用来求3! 


闭包:

  闭包就是函数中又定义函数,里面的函数可以使用外部作用域内的变量,但不是全局变量,所以一次创建外部函数,则多次调用内部函数时外部作用域内的变量还是有效的;多次运行外部函数,则会重新创建闭包,原来外部变量的值也不会受到影响,

看个例子:

 

def hellocounter (name):
    count=[0]
    def counter():
        count[0]+=1
        print 'Hello,',name,',',str(count[0])+' access!'
    return counter

hello = hellocounter('ma6174')
hello()
hello()
hello() 

运行结果:

Hello, ma6174 , 1 access!
Hello, ma6174 , 2 access!
Hello, ma6174 , 3 access!

你可能感兴趣的:(python)