1.普通函数
普通的函数没多少好说的,简简单单的y=f(x)形式,简单示例如下
def add(*arg):
s = 0
for i in arg:
s += i
return s
s = add(1,2,3,4,5)
print(s)
15
def add(**kwarg):
s = 0
for i in kwarg:
s += kwarg[i]
return s
s = add(a=1,b=2,c=3,d=4,e=5)
print(s)
15
2.匿名函数
匿名函数顾名思义就是没有名字的函数,Python中使用lambda表达式来表示匿名函数,简单示例如下
x = 3
y = 5
print((lambda x,y:x+y)(x,y))
8
x = 3
y = 5
s = lambda x,y:x+y
print(s(x,y))
8
3.高阶函数
接受一个或多个函数作为参数
返回一个函数
二者满足其一 即可
简单(可能不是那么简单)示例如下
def conter(base):
def inc(step=1):
nonlocal base
base += step
return base
return inc
f1 = conter(5)
print(f1(5))
10
4.柯里化装饰器
柯里化指的是将原来接收两个参数的函数转变成新的接收一个函数的过程。新的函数返回一个以原来第二个参数为参数的函数,好像挺起来有点拗口,数学表达式就是z = f(x, y)转换成z = f(x)(y)
先给一个柯里化的例子
def add(x):
def add1(y):
return x + y
return add1
s = add(5)
print(s(6))
11
接下来是装饰器的例子,装饰器功能就是用来装饰,不太好形象的解释,请用心去感受
注意这里@logger功能等于add = logger(add),且装饰器要在函数前进行定义
import time
def logger(fun):
def wrap(*args):
startime = time.time()
f = fun(*args)
print("hello wold")
endtime = time.time()
print(endtime - statime)
return f
return wrap
@logger #add = logger(add)
def add(x,y):
return x + y
print(add(7,10))
hello wold
0.015599966049194336
17
这个是不用@logger的例子,只是用来对比,不推荐
import time
def logger(fun):
def wrap(*args):
startime = time.time()
f = fun(*args)
print("hello wold")
endtime = time.time()
print(endtime - statime)
return f
return wrap
def add(x,y):
return x + y
s = logger(add)
print(s(5,6))
hello wold
0.015599966049194336
11