python3 05

人生苦短,我用Python

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
'''求和运算'''
def (*args):
add = 0
for n in args:
add = add + n
return add

print(add_sum(1, 2, 3, 4, 5))

'''将函数 -实例- 作为返回值'''
def add_sum_func(*args):
def my_sum():
add = 0
for n in args:
add = add + n
return add
return my_sum()

'''将函数 -对象- 作为返回值'''
def add_sum_func_02(*args):
def my_sum():
add = 0
for n in args:
add = add + n
return add
return my_sum

# 调用 add_sum_func()时,返回的不是函数求和的结果,而是求和函数本身,就是延迟了函数结果的实现
print(add_sum_func(1, 2, 3, 4, 5))
new_f = add_sum_func(1, 2, 3, 4, 5)
print(new_f)
# print(new_f()) # TypeError: 'int' object is not callable

print(add_sum_func_02(1, 2, 3, 4, 5)) # <function add_sum_func_02.<locals>.my_sum at 0x1021ef8c8>
new_f = add_sum_func_02(1, 2, 3, 4, 5)
print(new_f) # <function add_sum_func_02.<locals>.my_sum at 0x1021ef8c8>
print(new_f())

'''释义'''
'''
函数add_sum_func()与add_sum_func_02()的区别除了函数名字上有区别,在其函数内部只有一点不同,即返回值:
一个是:return my_sum()。带()表示返回的是 函数的数值,即:结果值。
另一个是:return my_sum。不带()表示返回的是 函数本身,即:函数所在内存的地址。
通过查看输出的结果可以清晰的对比出两者的不同。
'''