- 高阶函数除了可以接收函数作为参数,还可把函数作为一个返回结果
- 例如一个求和函数,调用的时候则可返回求和结果,如果不想立即返回结果,可在后面根据需要再使用
def sum(*args):#位置可变的位置参数
s=0
for n in args:
s+=n
return s
f=sum(1,2,3,4,5)
print(f)
15
def sum(*args):#位置可变的位置参数
def sum_args():
s=0
for n in args:
s+=n
return s
return sum_args
f=sum(1,2,3,4,5)
print(f)
print(f())
<function sum..sum_args at 0x000001F6998B99D0>
15
- 再如如何获得质数呢?
#思路:先得到所有的奇数保存到生成器中,再过滤掉生成器中能够被小于其本身奇数整除的数
def odd_num():
n=1
while True:
n+=2
yield n#生成器n中是所有的奇数
#判断是否能被整除的函数
def my_filter(n):
return lambda x:x%n>0
#质数生成器
def t():
yield 2
g=odd_num()
while True:
x=next(g)#从生成器中拿到一个奇数
g=filter(my_filter(x),g)#过滤后再赋值给g
yield x
for n in t():
'''print(n)
会是一个死循环,因为得到的是所有的质数,可以指定条件
'''
if n<20:
print(n)
else:
break
2
3
5
7
11
13
17
19