一 函数式编程
- 不修改外部状态。
- 模仿数学里得函数进行编程。
- 用函数编程写出得代码相当精简。
- 可读性比较差。
例子:
y=2*x+1 x=1 def test(x): return 2*x+1 test(x)
一 匿名函数
- 匿名函数就是不需要显式的指定函数。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lamba表达式中封装有限的逻辑进去。
注:匿名函数引用计数为0,lambda经常和内置函数一起使用
lambda/filter/map/reduce这些都是函数式编程的风格。
语法:
lambda函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
先来个简单得:
#这段代码
def calc(n):
return n**n
print(calc(10))
#换成匿名函数
calc = lambda n:n**n
print(calc(10))
换个高级点得:
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':250
}
def get_value(k):
return salaries[k]
#换成匿名函数:
lambda k:salaries[k]
f=lambda k:salaries[k] #匿名函数也可以赋值一个名字,但是这便违反了匿名的初衷
print(f)
print(f('egon'))
print(max(salaries))
print(max(salaries,key=get_value))
print(max(salaries,key=lambda k:salaries[k]))
print(min(salaries,key=lambda k:salaries[k]))
二 内置函数
官方文档,内置参数详解:
https://docs.python.org/3/library/functions.html?highlight=built#ascii
数据类型内置函数,又称为工厂函数。
函数是个具体的对象,谁来调用都可以用。方法需要绑定到具体对象。
l1=[] l1.append('aaaa') def test(x,item): x.append(item) test(b,'bbbbb')