美文网首页
匿名函数、函数作为变量

匿名函数、函数作为变量

作者: 她即我命 | 来源:发表于2018-07-25 17:43 被阅读94次

    匿名函数

    """
    匿名函数: 本质函数函数,以另一种简单的方式来声明

    匿名函数的声明:
    lombda 参数列表:返回值 --->结果是一函数变量

    lambda:声明匿名函数的关键字
    """

    练习:写一个函数计算两个数的和

    def my_sum1(x, y):
        return x+y
    
    print(my_sum1(10,20))
    
    # 匿名函数
    my_sum2 = lambda x, y: x+y
    
    print(my_sum2(10,20))
    

    输出:

    30
    30
    

    练习;

    funcs = []
    for i in range(5):
        funcs.append(lambda  x : x*i)
    """
    i =(0,1,2,3,4)
    i = 0
    [lambda x:x*i,lambda x:x*i,lambda x:x*i,lambda x:x*i,lambda x:x*i]
    """
    # lambda 2:2*4
    print(funcs[2](2))
    print(funcs[4](2))
    print(1)
    

    输出:

    8
    8
    1
    

    函数作为变量(重点)

    """
    声明一个函数就是在声明一个变量
    函数名可以作为变量来使用。可以打印,可以复制,可以作为函数的参数,可以作为函数的返回值。

    """

    b = 10
    a = b
    print(a)
    

    输出;

    10
    

    <function func1 at 0x001FC660> <class 'function'>
    函数名func1可以当成变量使用

    def func1(a):
        print(a)
        return  10
    print(func1,type(func1))
    

    输出;

    <function func1 at 0x0047C660> <class 'function'>
    

    将函数func1赋值给变量a,这个时候a就是一个函数

    a =func1
    b =func1(10) + 100
    a('aaa')
    

    输出:

    10
    aaa
    

    将函数func1作为列表的元素

    functions = [func1]
    functions[0]('abc')
    

    输出:

    abc
    

    1. 可以将函数作为参数

    def my_sum(*numbers):
        sum1 = 0
        for item in numbers:
            sum1 += item
        return sum1
    
    def my_mul(*numbers):
        sum1 = 1
        for item in numbers:
            sum1 *= item
        return  sum1
    
    def operation(merthod, x, y):
        """
        method = my_sum
        numbers = (10,20,30)
    
        return my_sum((10,20,30))
        """
    
        return merthod(x,y)
    
    #求10和20的操作
    result = operation(my_sum, 10,20)
    #求10*20
    result2 = operation(my_mul, 10,20)
    result3 = operation(lambda x, y : x < y, 10, 20)
    
    找出两个数中的最大值
    result4 = operation(lambda x,y:x if x>y else y,10,20)
    
    """
    表达式?值1:值2
    值1 if 表达式 else 值2 --->判断表达式是否为True,为True整个表达式的结果是'值1',否则是"值2"
    
    """
    a = 10 if 10 > 20 else 20
    
    print(result, result2, result3,result4)
    

    输出;

    30 200 True 20
    

    3.将函数作为函数的返回值
    写一个函数有多个参数,要求传入一个运算符号(+,—,*,>,<)

    • ---> 求和
    • ---> 求差
    def get_method(char):
        if char == '+':
            return lambda x,y:x+y
        elif char == '-':
            def func(m,n):
                return m-n
            return func
        elif char == '*':
            return  lambda x,y:x*y
        elif char == '>':
            def func(x,y):
                return x>y
            return func
        elif char == '<':
            return lambda x,y:x,y
        else:
            def func(x,y):
                return None
            return func
    
    
    
    print( get_method('+')(10,20))
    print( get_method('-')(10,20))
    print( get_method('/')(10,20))
    

    输出:

    30
    -10
    None
    

    相关文章

      网友评论

          本文标题:匿名函数、函数作为变量

          本文链接:https://www.haomeiwen.com/subject/mtcmmftx.html