闭包和装饰器
- 闭包能隐藏数据,类似于私有变量,防止其他人修改变量
- 装饰器是在OCP原则( Open Close Peinciple , 即开闭原则 )下修改别人代码,公司的合作项目
def fn() :
private = '私有数据'
n = 99
def inner():
print(private,n)
return inner
r = fn( )
r( )
def make_average( ) :
num=[ ]
def average(a) :
num.append(a)
return sum(num)/len(num)
return average
average =make_average()
average(4)
average(3)
print( average(5) )
def fn3( ) :
print('这是fn。。')
def add(a,b) :
r = a+b
return r
def mul(a,b) :
r = a * b
return r
def new_add(a,b) :
print('开始。。。。')
r = add(a,b)
print('结束。。。。')
return r
result = new_add(123,345)
print(result)
print()
def begin_end( function ) ->function :
'''
这是一个装饰函数,扩展原函数
参数:
function是要扩展的方法函数
'''
def new_function( *args , **kwargs ) :
print('开始。。。。')
r = function( *args , **kwargs )
print('结束。。。。')
return r
return new_function
a = begin_end(fn3)
a()
b = begin_end(add)
print( b(13,56) )
print( )
@begin_end
def say_hello( ) :
print('hello...')
say_hello( )
def RR( function ) ->function :
'''
这是一个装饰函数,扩展原函数
参数:
function是要扩展的方法函数
'''
def new_function( *args , **kwargs ) :
print('RRR。。。')
r = function( *args , **kwargs )
print('LLLL。。。')
return r
return new_function
@begin_end
@RR
def fn5() :
print('我是f5')
fn5( )