day11总结

python中声明函数是什么意思?

python中声明函数就是声明类型是function的变量, 函数名就是变量名。

变量作为函数的参数

def func2(x):
    print('函数里面:', x)


a = 10
func2(a)
func2(func1)

变量作为函数的返回值

def func3(x, y):
    num = x + y
    return num


print(func3(1, 2))


def func4():
    def func5():
        print('函数5')

    return func5


print(func4())
func4()()
装饰器的组成

装饰器 = 实参高阶函数 + 返回值高阶函数 + 糖语法
1.实参高阶函数
有一个参数是函数的函数就是实参高阶函数

问题1: 按个位数的大小对num中的元素从小到大排序

# [90, 90, 1, 23, 74, 78]
def func1(item):
    return item % 10


num = [1, 78, 90, 23, 74, 90]
num.sort(key=func1)
num.sort(key=lambda item: item % 10)
print(num)

问题2: 按各位数之和从大到小排序

# 1, 15, 9, 5, 11, 9   -> [78, 74, 90, 90, 23, 1]
num = [1, 78, 90, 23, 74, 90]


def func2(item):
    sum = 0
    for x in str(item):
        sum += int(x)
    return sum


num.sort(reverse=True, key=func2)
print(num)

1.返回值高阶函数
函数的返回是一个函数,这样的函数就是返回值高阶函数
情况一: 真正的返回值高阶函数

def func1():
    def func2():
        print('函数2')
    return func2

情况二: 假的返回值高阶函数

def func3():
    print('函数3')

def func4():
    return func3

练习: 声明一个函数operation,要求可以接收一个字符参数, 最后根据字符值的不同返回不同功能的函数

+ -> 求多个数和功能的函数 - -> 求多个数的差的功能的功能, * -> 求多个数的乘积的功能

operation('+')(1, 2, 4, 5) -> 12

operation('-')(1, 2, 4, 5) -> -10

operation('*')(1, 2, 4, 5) -> 40

def operation(char):
    # char = '+'
    if char == '+':
        def sum(*args):
            # args = (1, 2, 4, 5)
            temp = 0
            for x in args:
                temp += x
            return temp
        return sum

    elif char == '-':
        def diff(*args):
            temp = args[0]
            for x in args[1:]:
                temp -= x
            return temp
        return diff


print(operation('+')(1, 2, 4, 5))
print(operation('-')(1, 2, 4, 5))

你可能感兴趣的:(day11总结)