闭包
#!/usr/bin/python
#coding=utf-8
__author__ = 'moxiaokai'
#函数是一个对象,所以可以作为某个函数的返回结果
def xiangfan(x):
def kaifang(x):
def jueduizhi(x):
return abs(x) #返回绝对值
return jueduizhi(x)**0.5 #返回开方(绝对值)
return -kaifang(x) #返回相反数(开方(绝对值))
print xiangfan(-1)
装饰器
#!/usr/bin/python
#coding=utf-8
__author__ = 'moxiaokai'
def jueduizhi(x): #定义绝对值
return abs(x)
def kaifang(F): #定义开放
def new_F(x):
return F(x)**0.5
return new_F
def xiangfang(F): #定义相反数
def new_F(x):
return -F(x)
return new_F
func=xiangfang(kaifang(jueduizhi)) #定义装饰器
print func(-4)