Python 支持函数式编程,它是一种编程范式。我把它理解为可以将函数作为参数一样在函数间相互传递,十分的灵活。
1.作为方法参数
def add(x,y,f):
return f(x)+f(y)
print(add(10,-10,abs))
# ~ >>20
上面的例子将 abs 求绝对值的函数传入到 add 函数中,实现了绝对值相加的效果.如果我想 x、y 在求平方后再相加,可以自己写一个函数传入
def add(x,y,f=abs):
return f(x)+f(y)
def pow2(x):
return x*x
print(add(10,-10,pow2))
# ~ >> 200
2.作为返回值
# return function
def lazy_sum(*args):
def sum():
return reduce(lambda x,y:x+y,args)
return sum
s=lazy_sum(1,2,3,4,5)
print(s)
print(s())
# ~ >> <function lazy_sum.<locals>.sum at 0x10069d0d0>
# ~ >> 15
lazy_sum 是一个求和的函数,但它的返回值并不是一个数字,而是一个求和函数,需要你当作函数运行时才执行。
Python 在学习的过程中最让我着迷的是它的灵活性:动态类型,函数式编程,返回元组。Java 确实更适合大团队使用,约束性更强,让你知道如何当好一名程序员。但 Python 更能让你体会到作为一个创作者的快乐,写了几年代码,最难受的是自己不能完全独立的实施自己想法,把编程作为自己提升工作、生活效率的方法,希望 Python 的学习能解决我的真实问题。