函数式编程
函数作为形参传入函数:
#!/usr/bin/env python
# coding:utf-8
def cacl_sum(*args): #args为元组
all_sum = 0
for i in args:
all_sum += i
return all_sum
#!/usr/bin/env python
# coding:utf-8
def lazy_sum(*args):
def cacl_sum():
all_sum = 0
for i in args:
all_sum += i
return all_sum
return cacl_sum
f = lazy_sum(1,2,3,4,5) #f实质上为lazy_sum的返回值,是一个函数名
print f() #实质上调用了cacl_sum函数并运行
1.器可以理解为函数
2.装饰器其实就是用来装饰函数的,只是在函数原有的功呢上在添加一些其他的功能
3.装饰器的功能:比如权限的验证,日志记录,函数运行时间统计,执行函数前预备处理,执行函数后的清理等
接下来我们通过简单的例子来了解装饰器的功能:
#!/usr/bin/env python
# coding:utf-8
def addinfo(fun): #fun为函数,在此作为addinfo的形参
def wrapped():
print "欢迎光临中国建设银行"
fun()
return wrapped
@addinfo #装饰器的语法糖,等同于login = addinfo(login)
def login():
print "登录系统"
@addinfo
def kaihu():
print "开户系统"
login()
kaihu()
#!/usr/bin/env python
# coding:utf-8
import time #倒入time模块
def Time(fun):
def wrapped():
print "欢迎光临中国建设银行"
start_time = time.time() #函数运行前的时间
fun()
end_time = time.time() #函数运行后的时间
print "运行时间为%s" %(end_time - start_time)
return wrapped
@Time
def login():
print "登录系统"
@Time
def kaihu():
print "开户系统"
login()
kaihu()
#!/usr/bin/env python
# coding:utf-8
def addinfo(pre = ""): #定义空的字符串
def info(fun):
def wrapped():
print "欢迎光临建设银行的%s系统" %(pre)
fun()
return wrapped
return info
@addinfo("登陆")
def login():
print "登录系统"
@addinfo("开户")
def kaihu():
print "开户系统"
login()
kaihu()
#!/usr/bin/env python
# coding:utf-8
import time
def logger(fun):
def wrapped(*args):
fun(*args)
print "%s start %s(%s)" %(time.time(),fun.__name__,args)
return wrapped
@logger
def login():
print "login"
@logger
def add(x,y):
print x+y
login()
函数作为形参传入函数:
#!/usr/bin/env python
# coding:utf-8
def cacl_sum(*args): #args为元组
all_sum = 0
for i in args:
all_sum += i
return all_sum
print cacl_sum(1,2,3,4,5)
#!/usr/bin/env python
# coding:utf-8
def lazy_sum(*args):
def cacl_sum():
all_sum = 0
for i in args:
all_sum += i
return all_sum
return cacl_sum
f = lazy_sum(1,2,3,4,5) #f实质上为lazy_sum的返回值,是一个函数名
print f() #实质上调用了cacl_sum函数并运行
1.器可以理解为函数
2.装饰器其实就是用来装饰函数的,只是在函数原有的功呢上在添加一些其他的功能
3.装饰器的功能:比如权限的验证,日志记录,函数运行时间统计,执行函数前预备处理,执行函数后的清理等
接下来我们通过简单的例子来了解装饰器的功能:
#!/usr/bin/env python
# coding:utf-8
def addinfo(fun): #fun为函数,在此作为addinfo的形参
def wrapped():
print "欢迎光临中国建设银行"
fun()
return wrapped
@addinfo #装饰器的语法糖,等同于login = addinfo(login)
def login():
print "登录系统"
@addinfo
def kaihu():
print "开户系统"
login()
kaihu()
#!/usr/bin/env python
# coding:utf-8
import time #倒入time模块
def Time(fun):
def wrapped():
print "欢迎光临中国建设银行"
start_time = time.time() #函数运行前的时间
fun()
end_time = time.time() #函数运行后的时间
print "运行时间为%s" %(end_time - start_time)
return wrapped
@Time
def login():
print "登录系统"
@Time
def kaihu():
print "开户系统"
login()
kaihu()
#!/usr/bin/env python
# coding:utf-8
def addinfo(pre = ""): #定义空的字符串
def info(fun):
def wrapped():
print "欢迎光临建设银行的%s系统" %(pre)
fun()
return wrapped
return info
@addinfo("登陆")
def login():
print "登录系统"
@addinfo("开户")
def kaihu():
print "开户系统"
login()
kaihu()
#!/usr/bin/env python
# coding:utf-8
import time
def logger(fun):
def wrapped(*args):
fun(*args)
print "%s start %s(%s)" %(time.time(),fun.__name__,args)
return wrapped
@logger
def login():
print "login"
@logger
def add(x,y):
print x+y
login()
add(3,4)