python匿名函数lambda与switch的实现

2018-06-18 01:58:34来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

1,lambda的语法跟es6的箭头函数差不多

>>> show=lambda x,y: x * y
>>> show( 10, 20 )
200

2,递归求阶乘

>>> def fab( n ):
...     if n == 0:
...             return 1
...     else:
...             return n * fab( n - 1)
... 
>>> fab( 3 )
6
>>> fab( 5 )
120
>>> fab( 6 )
720
>>> 

利用reduce函数,也可以实现累计运算

>>> l = range( 1, 6 )
>>> l
[1, 2, 3, 4, 5]
>>> def f( x, y ):
...     return x * y
... 
>>> reduce( f, l )
120
>>> 

不需要定义函数,可以用lambda表达式简化

>>> fab = lambda x, y: x * y
>>> reduce( fab, [ 1, 2, 3, 4, 5, 6 ] )
720
>>> reduce( lambda x,y: x *y, [ 1, 2, 3, 4, 5, 6 ] )
720
>>> 

3,字典+函数可以实现switch的分支判断效果

if。。。。else实现一个加减法

#!/usr/bin/python
#coding:utf-8

from __future__ import division

def add( a, b ):
    return a + b
def sbb( a, b ):
    return a - b
def mul( a, b ):
    return a * b
def div( a, b ):
    return a / b


def oper( x, o, y ):
    if o == '+':
        return add( x, y )
    elif o == '-':
        return sbb( x, y )
    elif o == '*':
        return mul( x, y )
    elif o == '/':
        return div( x, y )
    else:
        pass


print oper( 10, '/', 20 )

用字典和函数改造成switch的方式

#!/usr/bin/python
#coding:utf-8

from __future__ import division

def add( a, b ):
    return a + b
def sbb( a, b ):
    return a - b
def mul( a, b ):
    return a * b
def div( a, b ):
    return a / b

oper = { '+' : add, '-' : sbb, '*' : mul, '/' : div }
def mySwitch( o, x, y ):
    #return oper[o]( x, y )
    #oper.get(o)等价于oper[0]取字典中的某一项
    return oper.get(o)( x, y )

print mySwitch( '/', 10, 20 )

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:项目部署

下一篇:Python开发【笔记】:python程序添加到systemctl系统服务