04-函数作为变量

声明一个函数就是在声明一个变量。函数名可以当成变量来使用,可以打印,可以赋值,可以查看类型,类型是(function),
可以作为函数的参数,可以作为函数的返回值。

a = 10
a = 'a'
print(a)

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

# 将函数func1赋给变量a,这个时候a就是一个函数
a = func1
b = func1(10) + 100
a('sss')
#  将函数func1作为列表的元素
functions = [func1,func1(10)]
functions[0]('abc')

运行结果如下:

a
 
10
sss
abc

1.函数作为参数

def my_sum(*number):
    """ numbers = ((10,20))"""
    sum1 = 0
    for item in number:
        sum1 += item
    return sum1

def my_mul(*numbers):
    sum1 = 1
    for item in numbers:
        sum1 *= item
    return sum1

def operation(method,x,y):
    """method = my_sum
        numbers = (10,20)
        return  my_sum()
    """
    return method(x,y)
 求10和20的值
result = operation(my_sum,10,20)
求10+20
result2 = operation(my_sum,10,20)
判断10是否大于20


result3 = operation(lambda x,y:xy else y,10,20)

运行结果如下:

30 30 True
"""
python中的三目运算符(?:)
值1 if 表达式 else 值2  ----->  判断表达式是否为True,True整个表达式的结果是‘值1’,否则是‘值2’
"""

10 if 10 > 20 else 20
print(result,result2,result3,result4)



####2.将函数作为函数的返回值

# 写一个函数,有个参数,要求传入一个运算符(+,-,*,>,<),返回符号对应的功能
# + ------>   求和功能
# - ------>   求差功能
#def get_method('+',10,20)

def get_method(char):
    """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))

运行结果如下:

20
30
200
False

你可能感兴趣的:(04-函数作为变量)