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))